2012-12-05 16 views
2

讓我們運行任務mainTask。然後發生一些事情,我想安排繼續。什麼是強大的方式來創建延續已經出色的任務?

mainTask.ContinueWith(continuationTask); 

但是,如果mainTask在那一刻完成,這將不起作用。 < - 錯誤陳述
好了,我們可以藉此在一些檢查:

if (mainTask.IsCompleted) 
{ 
    continuationTask.Start(); 
} 
else 
{ 
    mainTask.ContinueWith(continuationTask); 
} 

這是不是安全的或者是因爲我們可以有檢查時未完成和已完成的任務只是創造延續之前。
因此,問題如何能夠動態地繼續下去?

我現在看到的是建立第三個任務唯一的解決辦法:

var waitingTask = new Task (() => mainTask.Wait()); 
waitingTask.ContinueWith(continuationTask); 
waitingTask.Start(); 

但我想知道是否有更優雅的方式。

+2

「但是,如果mainTask在那一刻完成,這將不起作用。這是不正確的。 – usr

+0

你需要發佈一個獨立的repro來尋求幫助。通過這樣做,你會發現你的假設是錯誤的,並且在某處存在錯誤。 – usr

+0

@us好吧,一會兒。我會檢查這個。可能是這是我的誤解... –

回答

4

但是,如果mainTask在那一刻完成,這將不起作用。

這是不正確的。

您需要創建一個自包含的repro來查找幫助。通過這樣做,你會發現你的假設是錯誤的,並且在某處存在錯誤。

相關問題