Async modifier in C#

c#

Solution

Adding `async`, by itself, does nothing other than allow the method body to use the `await` keyword. A properly implemented async method won't block the UI thread, but an improperly implemented one most certainly can.

What you probably wanted to do was this:

async private void Button_Click_1(object sender, RoutedEventArgs e)
{
    await Task.Delay(2000);
    MessageBox.Show("All done!");
}

Problem

I have the question, what is the difference between these two methods? ``` async private void Button_Click_1(object sender, RoutedEventArgs e) { Thread.Sleep(2000); } private void Button_Click_2(object sender, RoutedEventArgs e) { Thread.Sleep(2000); } ``` Both of them block my UI. I know that I must start another thread to avoid blocking, but I have found: "An async method provides a convenient way to do potentially long-running work without blocking the caller's thread". I'm a bit confused.

Original source