我有一个异步方法:异步和同步方法
public async Task<Foo> GetFooAsync();
我需要它的同步版本。事情是这样的:
public Foo GetFoo();
我真的不希望完全重写的GetFooAsync
代码,我希望做一些诸如
public Foo GetFoo()
{
return GetFooAsync().GetAwaiter().GetResult();
}
这是好主意还是这个方法有任何不明显的问题?据我所知,如果我在同步上下文中使用GetFooAsync().Result
,我可能会遇到死锁问题。但是GetFooAsync().GetAwaiter().GetResult()
呢?
''return GetFooAsync()。Result;''? –
请勿使用'.Result'使用'.GetAwaiter()。GetResult()',因为后者处理聚合异常,前者不会。 – Lloyd
如果你想要一个同步版本,然后分别添加一个shync过载 – Rahul