當前正在使用下面的代碼來等待一系列任務完成。但是,我現在有一種情況,我希望能夠取消/中止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