Task.Delay — non-blocking. Thread.Sleep — blocking.
Task.Delay:
1// Non-blocking2await Task.Delay(1000);3Console.WriteLine("After 1 second");
Thread.Sleep:
1// Blocking2Thread.Sleep(1000);3Console.WriteLine("After 1 second");
In async code, always use Task.Delay:
1// Bad2async Task DoWork() {3 Thread.Sleep(1000); // Blocks thread!4}56// Good7async Task DoWork() {8 await Task.Delay(1000); // Non-blocking9}