我建议你开始跟我介绍到
async/
await和后续使用上TAP官方MSDN文档。
正如我在介绍性博客文章中提到的那样,有几个
Task成员是TPL的保留成员,并且没有使用纯
async代码。
newTask并
Task.Start应替换为
Task.Run(或
TaskFactory.StartNew)。同样,
Thread.Sleep应替换为
Task.Delay。
最后,我建议您不要使用
Task.WaitAll;
您的控制台应用程序应该只是
Wait在一个单一
Task其用途
Task.WhenAll。经过所有这些更改,您的代码将如下所示:
class Program{ static void Main(string[] args) { MainAsync().Wait(); } public static async Task MainAsync() { Task task1 = Task1(); Task task2 = Task2(); await Task.WhenAll(task1, task2); Debug.WriteLine("Finished main method"); } public static async Task Task1() { await Task.Delay(5000); Debug.WriteLine("Finished Task1"); } public static async Task Task2() { await Task.Delay(10000); Debug.WriteLine("Finished Task2"); }}


