假设您使用的是 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;
}
如果您的任务都不是真正的任务,只需去掉除最后一个之外的所有等待,您就可以开始了。