Is .GetAwaiter().GetResult(); safe for general use? Is .GetAwaiter().GetResult(); safe for general use? multithreading multithreading

Is .GetAwaiter().GetResult(); safe for general use?


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 use await, 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.