Why this matters
Blocking async methods with .Result or .Wait() can cause deadlocks and prevent efficient asynchronous execution. Use await instead for proper async behavior.
Blocking async methods with .Result or .Wait() can cause deadlocks and prevent efficient asynchronous execution. Use await instead for proper async behavior.
Blocking async methods with .Result or .Wait() can cause deadlocks and prevent efficient asynchronous execution. Use await instead for proper async behavior.
Side-by-side examples engineers can pattern-match during review.
public static class DeadlockDemo
{
private static async Task DelayAsync()
{
await Task.Delay(1000);
}
// This method causes a deadlock when called in a GUI or ASP.NET context.
public static void Test()
{
// Start the delay.
var delayTask = DelayAsync();
// Wait for the delay to complete.
delayTask.Wait(); // Noncompliant
}
}public static class DeadlockDemo
{
private static async Task DelayAsync()
{
await Task.Delay(1000);
}
public static async Task TestAsync()
{
// Start the delay.
var delayTask = DelayAsync();
// Wait for the delay to complete.
await delayTask;
}
}From the same buckets as this rule.