Calling async method synchronously

You can access the Result property of the task, which will cause your thread to block until the result is available:

string code = GenerateCodeAsync().Result;

Note: In some cases, this might lead to a deadlock: Your call to Result blocks the main thread, thereby preventing the remainder of the async code to execute. You have the following options to make sure that this doesn’t happen:

  • Add .ConfigureAwait(false) to your library method or

  • explicitly execute your async method in a thread pool thread and wait for it to finish:

      string code = Task.Run(() => GenerateCodeAsync).Result;
    

This does not mean that you should just mindlessly add .ConfigureAwait(false) after all your async calls! For a detailed analysis on why and when you should use .ConfigureAwait(false), see the following blog post:

  • .NET Blog: ConfigureAwait FAQ

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)