C# 5 を使用していて、すべての Task() メソッドが本当に a Task
(または待機可能なもの) を返すと仮定すると、コードは次のようになります。
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 を取り除くだけで、準備完了です。