tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル マルチスレッドについて
投稿日: 2007/09/07(Fri) 12:45
投稿者
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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。