我有一个问题,这两种方法有什么区别?
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);
}
它们都阻止了我的用户界面。我知道我必须启动另一个线程以避免阻塞,但我发现:
“异步方法提供了一种方便的方法来执行可能长时间运行的工作,而不会阻塞调用者的线程”。
我有点困惑。
最佳答案
添加 async
本身除了允许方法体使用 await
关键字外什么都不做。正确实现的异步方法不会阻塞 UI 线程,但实现不当的方法肯定会阻塞。
您可能想做的是:
async private void Button_Click_1(object sender, RoutedEventArgs e)
{
await Task.Delay(2000);
MessageBox.Show("All done!");
}
关于c# - C# 中的异步修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17406591/