停止阻止程序关闭的线程?

时间:2012-12-16 12:29:38

标签: vb.net multithreading

我有一个非常令人不安的问题;当我点击红叉以关闭我的应用程序时,我有一个例外:

    Sub NewThread()
    AddHandler RenderFrameEvent, AddressOf RenderFrame
    Dim lastplay As Boolean = True
    Do
        If lastplay = Not Play Then
            System.Threading.Thread.Sleep(100)
            lastplay = Play
        Else
            If Play = True Then
                KeyState()
                If Me.InvokeRequired Then
                    Me.Invoke(New MethodInvoker(AddressOf NewThread))
                Else
                    RaiseEvent RenderFrameEvent()
                End If
            End If
        End If
        Application.DoEvents()
    Loop
End Sub

我在

处获得了System.InvalidOperation异常
Me.Invoke(New MethodInvoker(AddressOf NewThread))

因为表单已关闭,这很正常,然后,我在FormClosing事件中执行此操作:

Trd.Abort '(the thread is named Trd)

我得到一个Threading.ThreadAbort例外。

任何人都可以告诉我如何完全停止某个帖子,或者如何强制该应用程序自杀?

1 个答案:

答案 0 :(得分:2)

考虑设置一个可由线程检查并用于退出循环的标志,而不是中止线程。通过这种方式,线程自然会“死”。