我已将代码简化为单一形式,如下所示:
Imports System.Threading.Tasks
Public Class frmTest
Inherits Form
Public Sub WorkerSub(oAction As action)
Dim x = 0
oAction.Invoke()
x += 1
End Sub
Private Sub Test()
If Me.InvokeRequired Then
Me.Invoke(Sub()
Test()
End Sub)
Else
MsgBox("Test")
End If
End Sub
Private Sub btnTrigger_Click(sender As Object, e As EventArgs) Handles btnTrigger.Click
Dim tt As Task = Task.Factory.StartNew(Sub()
WorkerSub(AddressOf Test)
End Sub)
tt.Wait()
' Never arrives here
Stop
End Sub
End Class
在Me.Invoke(sub() ...
执行 Sub Test 时,它会挂起。没有错误被抛出,并且没有在事件查看器中写入任何内容。
即使我按 F11,Debug Into,它也会挂起。
有任何想法吗?
谢谢
J.P