I read in a few places that .GetAwaiter().GetResult();
could cause deadlocks and that we should use async
/await
instead. But I see many code samples where this is used. Is it ok to use it? Which are the cases where it can deadlock? Is there something else I should use, like Task.Wait
?
相关问题
- Sorting 3 numbers without branching [closed]
- Graphics.DrawImage() - Throws out of memory except
- Why am I getting UnauthorizedAccessException on th
- 求获取指定qq 资料的方法
- How to know full paths to DLL's from .csproj f
As I describe on my blog,
GetAwaiter().GetResult()
can deadlock when it's used in a one-thread-at-a-time context. This is most commonly seen when called on the UI thread or in an ASP.NET context (for pre-Core ASP.NET).Wait
has the same problems. The appropriate fix is to useawait
, and make the calling code asynchronous.Note that the
Main
method in Console apps is an exception to this rule; it is perfectly appropriate to use there. Many code samples use it in this way.