0

スレッドが中断されている間にフォームを閉じようとしましたが、次のエラーが発生しました:Thread is suspended; attempting to abort.

スレッドが実行されていて、[ボタンを閉じる] をクリックすると、問題なく終了します。

ここに私のコード:

 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    t1.Abort()

    Me.Close()

End Sub

スレッドが中断されているかどうかに関係なく、フォームを閉じたいです。

4

1 に答える 1

0

スレッドをスリープ状態にするパターンと、それを「中止」する方法を次に示します。.WaitOne は、Thread.Sleep のように機能する引数を取ることができることに注意してください。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'start a thread
    If IsNothing(somethrd) Then
        somethrd = New Threading.Thread(AddressOf test)
        somethrd.IsBackground = True
        somethrd.Start()
    End If
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    'stop
    stopsomethrd = True
    somethrdwait.Set()
    somethrd.Join()
    Debug.WriteLine("end")
End Sub

Dim somethrd As Threading.Thread
Dim somethrdwait As New Threading.AutoResetEvent(False)
Dim stopsomethrd As Boolean

Private Sub test()
    Do
        'your code
        somethrdwait.WaitOne() 'suspend thread
        If stopsomethrd Then Exit Do
    Loop
End Sub
于 2013-09-18T13:47:46.177 に答える