我知道关于这个 arouynd 有一些线程和 atricles,但我似乎无法让它发挥作用。
基本上我有两个(或更多)任务要运行,但是有一个超时,在这个超时之后,我希望所有任务都取消,并且有办法知道我们已经超时,这样我就可以将它返回到我的网页。
这是我所拥有的:
Dim cts As System.Threading.CancellationTokenSource = New System.Threading.CancellationTokenSource
Dim oTask1 As Task(Of SearchReturn) = Task(Of SearchReturn).Factory.StartNew(
Function()
While Not cts.IsCancellationRequested
cts.Token.ThrowIfCancellationRequested()
Return Test1(oTest)
End While
End Function, cts.Token)
Dim oTask2 As Task(Of SearchReturn) = Task(Of SearchReturn).Factory.StartNew(
Function()
While Not cts.IsCancellationRequested
cts.Token.ThrowIfCancellationRequested()
Return Test2(oTest)
End While
End Function, cts.Token)
If Not Task.WaitAll({oTask1, oTask2}, 4000, cts.Token) Then cts.Cancel()
cts.Cancel() 确实被调用了,因此它知道它花费了太长时间,但实际上并没有取消它,它只是继续执行直到任务完成。
我敢肯定这可能是我做错了一些简单的事情,但我无法发现它。
提前致谢。安迪