【发布时间】:2016-09-10 03:01:20
【问题描述】:
在我的代码示例中,当 task2 完成时,主线程不会等待。
public async Task Run()
{
Console.WriteLine("Main start");
await getTask1();
Console.WriteLine("Main 2");
var task2 = getTask2();
await Task.Delay(1);
Console.WriteLine("Main 3");
task2.Start();
await task2;
Console.WriteLine("Main end");
}
private async Task getTask1()
{
Console.WriteLine("task1 start");
await Task.Delay(100);
Console.WriteLine("task1 end");
}
private Task getTask2()
{
return new Task(async () =>
{
Console.WriteLine("task2 start");
await Task.Delay(100);
Console.WriteLine("task2 end");
});
}
这段代码的执行结果是
主要开始
任务1开始
任务1结束
主线 2
主要 3
task2 开始
主要结束
任务2结束
如何更改“Main end”位于列表末尾的代码。
【问题讨论】:
标签: c# asynchronous async-await