Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于C#任务,检查之前需要等待()。结果?_C#_Asynchronous_Task - Fatal编程技术网

对于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
,以便当前线程不会被阻止。两者都在阻止通话。