[英]With C# tasks, Wait() necessary before checking .Result?
写在非async
方法中 ,这段代码有什么区别......
return MyMethodAsync().Result;
......这个,下面?
var task = MyMethodAsync();
task.Wait();
return task.Result;
也就是说,这两者的行为是否相同?
说第二个片段不会阻止正在执行的线程( 非async
方法调用MyMethodAsync()
),而第一个片段是否正确?
是的,最终结果是相同的:如果你跋涉,最终它可能会调用InternalWait
。
http://referencesource.microsoft.com/#mscorlib/system/threading/Tasks/Future.cs,e1c63c9e90fb2f26
说第二个片段不会阻止正在执行的线程(非同步方法调用MyMethodAsync()),而第一个片段是否正确?
任何调用Wait或Result的Task对象都会阻塞正在执行的线程。 实际上不建议使用Wait或Result,因为它可能会给你的应用程序带来死锁。
https://msdn.microsoft.com/en-us/magazine/jj991977.aspx
阅读有关使用异步等待的最佳实践的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.