| タイトル | : マルチスレッドについて |  
| 記事No | : 6249 |  
| 投稿日 | : 2007/09/07(Fri) 12:45 |  
| 投稿者 | : K  |  
 Kと申します。 WindowsXP Pro+SP2 VB.net2003でマルチスレッドの勉強をしています。 VB.netは始めてから2ヶ月程度です。
  かなりの処理時間のかかる処理をマルチスレッドで行っているのですが スレッドが途中で止まってしまします。 早い時は3分程度、遅い時は40分程度で止まってしまします。 止まった時は、特にエラーは出ていません。 現在、再度確認を行っている所ですが、一度ソース内のコメント「'ここで止まってた」で 止まっていました。 デバッガでデバッグを行いましたが、スレッド部分はデバッグができない? もし、スレッド部分もデバッグできるのであれば、アドバイスをいただけると助かります。 他に必要な情報があれば、言っていただければできる範囲で出しますので、コメントをお願いします。
  以下に現在のソースの要約したものを載せますので、よきアドバイスをお願いいたします。
  Public Class Form1     Inherits System.Windows.Forms.Form
      Private Delegate Sub sampleCallDelegate()     Private workerThread As Thread     Public Start_Time As Date
      Private Sub TextBox_Disp()         Me.TextBox1.Refresh()         Me.TextBox2.Refresh()         Me.TextBox3.Refresh()     End Sub
      Private Sub Sub_A()         Dim n, i, c As Long
          For n = 9223372036854775807 To 2 Step -1             TextBox1.Text = n.ToString             For i = 2 To (n / 2) + 1                 TextBox2.Text = i.ToString                 c = n Mod i                 If c = 0 Then                     Exit For                 End If         'ここで止まっていた。                 TextBox3.Text = c.ToString                 Me.Invoke(New sampleCallDelegate(AddressOf TextBox_Disp))             Next             If c <> 0 Then                 TextBox1.Text = n.ToString                 Exit For             End If         Next     End Sub
      Private Sub START_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles START.Click
          workerThread = New System.Threading.Thread( _                             New System.Threading.ThreadStart(AddressOf Sub_A))
          workerThread.IsBackground = True         workerThread.Start()
      End Sub
  End Class 
 
 |