我最近在阅读一些使用大量异步方法的代码,但有时需要同步执行它们.代码确实:
Foo foo = GetFooAsync(...).GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)
这是一样的吗?
Foo foo = GetFooAsync(...).Result;
Run Code Online (Sandbox Code Playgroud)
?
我的方法返回Task.我想等到它完成.我应该使用
.Wait()或.GetAwaiter().GetResult()?他们之间有什么区别?
我知道async Task可以通过以下方式获取例外情况:
try { await task; }
catch { }
Run Code Online (Sandbox Code Playgroud)
虽然async void不能,因为它无法等待.
但是为什么不等待async Task(就像异步void一样)Exception被吞下,而void的那个崩溃了应用程序?
来电者:ex();
叫:
async void ex() { throw new Exception(); }
async Task ex() { throw new Exception(); }
Run Code Online (Sandbox Code Playgroud)