I have the question, what is the difference between these two methods?
async private void Button_Click_1(object sender, RoutedEventArgs e)
{
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!");
}