[英]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.