当前正在使用下面的代码来等待一系列任务完成。但是,我现在有一种情况,我希望能够取消/中止WhenAll呼叫,最好通过取消令牌。我会怎么做呢?我该如何取消Task.WhenAll?
Dim TaskCollection As New List(Of Tasks.Task)
For x As Integer = 1 To Threads
Dim NewTask As Tasks.Task = TaskHandler.Delegates(DelegateKey).Invoke(Me, Proxies, TotalParams).ContinueWith(Sub() ThreadFinished())
TaskCollection.Add(NewTask)
Next
Await Tasks.Task.WhenAll(TaskCollection)
我假设它会沿着下一代代码行,但我不确定'XXX'会发生什么。
Await Tasks.Task.WhenAny(Tasks.Task.WhenAll(TaskCollection), XXX)
通常情况下,您想要自行取消实际任务。你确定你只想取消*等待这些任务吗? – 2014-12-01 22:14:32
这是一个有趣的问题。如果他没有得到大部分答案,我就不会解决它。 – 2014-12-01 22:23:53
@StephenCleary我有一个问题,其中一个任务没有完成。目前,我不知道为什么。当我决定时,我需要一个故障安全来取消WaitAll。我知道它不能解决卡住的任务,但需要快速修复。我想解决主要问题,但我有一个庞大的代码库,我不确定它在哪里。由于大小,我无法在此发布完整的代码,也无法透露我的客户已付费的代码。 – iguanaman 2014-12-01 22:27:27