我正在尝试取消包含长时间运行的阻塞方法调用的任务。我的问题是,在长时间运行的操作完成之前,执行不会返回给调用者。 (即使它被取消了。)
Public Class DebugForm
Private Sub DebugForm_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim cts As New CancellationTokenSource
Task.Run(Sub()
DoLongRunningBlockingWork()
cts.Token.ThrowIfCancellationRequested()
End Sub, cts.Token)
'Simulate cancelling after a second.
Threading.Thread.Sleep(1000)
cts.Cancel()
End Sub
Private Sub DoLongRunningBlockingWork()
Threading.Thread.Sleep(30000)
Debug.WriteLine("Completed")
End Sub
End Class
答案 0 :(得分:0)
你必须检查在该状态下长时间运行的进程的状态,你将能够返回给调用者。 每个进程都包含与进程关联的堆栈,堆栈由状态变量组成,您可以通过该状态变量查看进程的状态。