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 に答える