异步修改器在C#

我有这个问题,这两种方法有什么区别?

    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);
    }

他们都阻止我的UI。我知道我必须启动另一个线程来避免阻塞,但我发现:

“异步方法提供了一种方便的方法来执行潜在的长时间运行的工作,而不会阻塞调用者的线程”。

我有点困惑

添加异步本身不会允许方法体使用await关键字。一个正确实现的异步方法不会阻止UI线程,但是一个不正确的实现方式肯定可以。

你可能想做的是这样的:

async private void Button_Click_1(object sender, RoutedEventArgs e)
{
    await Task.Delay(2000);
    MessageBox.Show("All done!");
}
http://stackoverflow.com/questions/17406591/async-modifier-in-c-sharp

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:异步修改器在C#