我有一個異步方法:異步和同步方法
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