当前位置: 首页 > 编程语言 > C#

C#中的异步修饰符分享

时间:2023-04-10 22:07:47 C#

C#中的异步修饰符我有一个疑问,这两种方法有什么区别?asyncprivatevoidButton_Click_1(objectsender,RoutedEventArgse){Thread.Sleep(2000);}privatevoidButton_Click_2(objectsender,RoutedEventArgse){Thread.Sleep(2000);他们都阻止了我的用户界面。我知道我必须启动另一个线程以避免阻塞,但我发现:“异步方法提供了一种方便的方法来执行可能长时间运行的操作,而不会阻塞调用者的线程”。我有点困惑。除了允许在方法主体中使用await关键字外,单独添加async不会执行任何其他操作。正确实现的异步方法不会阻塞UI线程,但错误实现的方法肯定会。您可能想要做的是:asyncprivatevoidButton_Click_1(objectsender,RoutedEventArgse){awaitTask.Delay(2000);MessageBox.Show("全部完成!");async本身不会启用异步(非阻塞)方法传输。您应该在异步函数中使用await。您应该阅读本文以更好地理解此功能。1)Asynckeywork通过时间分片使方法异步,无阻塞。Async必须存在于await上,告诉await任务已经完成,但是之前的一切都会被执行。asyncprivatevoidButton_Click_1(objectsender,RoutedEventArgse){vartask=Task.Delay(1000);/*做事*/等待任务;}2)只做一个线程hibernate,只有线程休眠完成任务后,上面的任何代码才会执行??。privatevoidButton_Click_2(objectsender,RoutedEventArgse){Thread.Sleep(2000);/*Dostuff*/}这是一本关于使用Async和Await的msdn异步编程的好读物!以上就是《C#学习教程:C#中的异步修饰符》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: