Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net中线程挂起时如何关闭线程_Vb.net_Multithreading - Fatal编程技术网

vb.net中线程挂起时如何关闭线程

vb.net中线程挂起时如何关闭线程,vb.net,multithreading,Vb.net,Multithreading,我试图在线程挂起时关闭窗体,但出现以下错误:线程挂起;正在尝试中止。 如果线程正在运行,我单击按钮关闭它 这是我的代码: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click t1.Abort() Me.Close() End Sub 即使线程挂起或未挂起,我也要关闭窗体。这里有一个线程休眠模式以及如何“中止”线

我试图在线程挂起时关闭窗体,但出现以下错误:
线程挂起;正在尝试中止。

如果线程正在运行,我单击按钮关闭它

这是我的代码:

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

    Me.Close()

End Sub

即使线程挂起或未挂起,我也要关闭窗体。

这里有一个线程休眠模式以及如何“中止”线程。请注意.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

永远不要挂起线程。它是邪恶的。而且不要。中止线程,充满了gotcha。你可以为你的线程设置IsBackground()为True,这将允许它在应用程序关闭时自动终止它。但是我同意前面的帖子,你不应该使用Suspend()或Abort()!正如其他人所说,如果可以的话,用任务代替。有取消的能力,这真的很好。认真看看这个。