请考虑以下方法:
public static void Main(string[] args)
{
Stopwatch stopwatch = new Stopwatch();
// Begin timing.
stopwatch.Start();
Task task = dosomething(stopwatch);
Console.WriteLine("Waiting for async to finish {0}", stopwatch.Elapsed);
task.Wait();
Console.WriteLine("After wait {0}",stopwatch.Elapsed);
// Stop timing.
stopwatch.Stop();
// Write result.
}
public static async Task dosomething(Stopwatch stopwatch)
{
Console.WriteLine("Started async", stopwatch.Elapsed);
await dos();
Console.WriteLine("Ended async", stopwatch.Elapsed);
}
public static async Task dos()
{
Thread.Sleep(5000);
Thread.Sleep(1000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我本来希望输出按以下顺序进行:
开始异步
等待异步完成
异步结束
等待之后
但是我得到以下输出
开始异步
异步结束
等待异步完成00:00:06.0990283
等待后00:00:06.0992659
我以为,当您等待方法完成时,控制权将返回给调用方。因此,应该在“结束异步”之前调用“等待异步完成”。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |