0

我有一个非常令人不安的问题;当我单击红十字关闭我的应用程序时,这里有一个例外:

    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 异常。

谁能告诉我如何正确停止线程,或如何强制应用程序自杀?

4

1 回答 1

2

与其中止线程,不如考虑设置一个可以由您的线程检查并用于退出循环的标志。这样线程自然会“死”。

于 2012-12-16T12:36:55.173 回答