タイトル : マルチスレッドについて 投稿日 : 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 |