我有這樣的例子代碼:ContinueWith鏈接無法正常運行
static void Main(string[] args) {
var t1 = Task.Run(async() => {
Console.WriteLine("Putting in fake processing 1.");
await Task.Delay(300);
Console.WriteLine("Fake processing finished 1. ");
});
var t2 = t1.ContinueWith(async (c) => {
Console.WriteLine("Putting in fake processing 2.");
await Task.Delay(200);
Console.WriteLine("Fake processing finished 2.");
});
var t3 = t2.ContinueWith(async (c) => {
Console.WriteLine("Putting in fake processing 3.");
await Task.Delay(100);
Console.WriteLine("Fake processing finished 3.");
});
Console.ReadLine();
}
控制檯輸出令我感到困惑:
- 把假冒處理1
- 假處理完1
- 加工假加工2.
- 加工假加工3.
- 假處理完3
- 假處理完畢2.
我試圖鏈的任務,使他們執行了一個又一個,我究竟做錯了什麼?我不能使用await,這只是示例代碼,實際上我正在排隊傳入的任務(有些是異步的,有些不是),並且想按照它們進來的順序執行它們,但沒有並行性,ContinueWith似乎比創建一個ConcurrentQueue和處理everythning我自己,但它只是不起作用...
等待聲明「分裂」任務。所以t1只會引用前半部分。我感到驚訝放入假處理2放入假處理後不立即發生1 – 2014-09-05 17:17:02
@WeylandYutani我在答案中解釋了爲什麼這種情況沒有發生。 – Servy 2014-09-05 17:18:20
其實我還在說垃圾,所以不理我 – 2014-09-05 17:19:36