2011-09-29 72 views
1

試圖做這樣的事情:如何在不阻塞的情況下調用另一個任務之前完成一個任務?

Task task1 = Task.Factory.FromAsync(stream.BeginWrite, stream.EndWrite, task1Data, 0, task1Data.Length, null, TaskCreationOptions.AttachedToParent); 

Task task2 = Task.Factory.FromAsync(stream.BeginWrite, stream.EndWrite, task2Data, 0, task2Data.Length, null, TaskCreationOptions.AttachedToParent); 

但糾正我,如果我錯了,但是是不是有機會可以TASK2同時或獨立寫作執行之前執行?我想要類似ContinueWith的代碼不阻塞,但task2仍然不會執行,直到task1完成。

我試過Task task2 = new Task(...),所以我可以調用task1.ContinueWith(task2);,但它不會編譯。我很確定我必須使用FromAsync(它會自動運行)。我認爲在兩條線之間放置task1.Wait();會起作用,但不會阻擋?試圖遠離阻塞..

有什麼建議嗎?

回答

5
task1.ContinueWith(t=>Task.Factory.FromAsync(stream.BeginWrite, stream.EndWrite, task2Data, 0, task2Data.Length, null, TaskCreationOptions.AttachedToParent)); 
+0

這樣做。我怎麼能忘記lambda。謝謝! –

相關問題