对于C#任务,检查之前需要等待()。结果?
在非对于C#任务,检查之前需要等待()。结果?,c#,asynchronous,task,C#,Asynchronous,Task,在非async方法中编写,此代码与 return MyMethodAsync().Result; …下面这个呢 var task = MyMethodAsync(); task.Wait(); return task.Result; 也就是说,这两个人的行为是相同的吗 如果说第二个代码段没有阻止正在执行的线程(非async方法调用MyMethodAsync()),而第一个代码段没有阻止,是否正确?是的,最终结果是相同的: 如果你费力地完成了,它最终可能会调用InternalWait 第
async
方法中编写,此代码与
return MyMethodAsync().Result;
…下面这个呢
var task = MyMethodAsync();
task.Wait();
return task.Result;
也就是说,这两个人的行为是相同的吗
如果说第二个代码段没有阻止正在执行的线程(非
async
方法调用MyMethodAsync()
),而第一个代码段没有阻止,是否正确?是的,最终结果是相同的:
如果你费力地完成了,它最终可能会调用InternalWait
第二个代码段没有阻止正在执行的线程(调用MyMethodAsync()的非异步方法),而第一个代码段没有阻止,这样说对吗
任何调用等待或结果的任务对象都会阻塞正在执行的线程。
实际上不建议使用Wait或Result,因为它可能会给应用程序带来死锁
阅读有关使用async await的最佳实践的更多信息。我认为最终结果是相同的。首先不需要等待,结果将被阻止,直到它可用,但您可能应该使用
await
,以便当前线程不会被阻止。两者都在阻止通话。