假設你正在使用C#5,您的所有任務()方法真正返回一個Task
(或任何awaitable),你的代碼看起來應該是:
public async Task PerformMainTask()
{
await Task1();
await Task2();
// Start long task
var longTask = PerformLongTask();
await Task3();
await Task4();
//wait for long task to finish
await longTask;
}
但是,如果你的長期任務不上自己的平行運行,你可以強制與Task.Run
這樣做:
public async Task PerformMainTask()
{
await Task1();
await Task2();
// Start long task
var longTask = Task.Run(PerformLongTask);
await Task3();
await Task4();
//wait for long task to finish
await longTask;
}
如果沒有是你的任務是真正的任務,只是剝離所有的await除了最後一個,你會好到哪裏去。
轉到後臺線程 – Sandy