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