对于 C# 任务,在检查 .Result 之前需要 Wait() 吗?

cor*_*ore 6 c# asynchronous task

写在一个非async方法里面,这段代码有什么区别吗...

return MyMethodAsync().Result;
Run Code Online (Sandbox Code Playgroud)

……还有这个,下面?

var task = MyMethodAsync();

task.Wait();

return task.Result;
Run Code Online (Sandbox Code Playgroud)

也就是说,这两者的行为是一样的吗?

说第二个片段不会阻塞正在执行的线程(async方法调用MyMethodAsync()),而第一个片段会阻塞,是否正确?

Dan*_*ite 5

是的,最终结果是一样的:如果你涉足其中,最终它可能会调用InternalWait.

http://referencesource.microsoft.com/#mscorlib/system/threading/Tasks/Future.cs,e1c63c9e90fb2f26