Winform 异步async防止UI线程阻塞的方法

 时间:2024-10-27 19:00:32

1、以一个Http请求收发程序为例子,使用了System.Net中的类。要使用异步方法,需要引用System.Threading。

Winform 异步async防止UI线程阻塞的方法

2、首先,我们不希望单击处理函数button1_click阻塞UI进程。给其添加async关键字,以声明为异步方法,使其可以单独等待。

Winform 异步async防止UI线程阻塞的方法

3、在async声明的方法中,就可以使用await关键字了。如果await右边的同样是一个异步方法需要等待,那么这段程序(button1_click)会在await处暂停等待,进程则会回到UI进程继续处理其它事情,当await等待完毕,进程再从UI进程回到这里继续执行。

Winform 异步async防止UI线程阻塞的方法

4、自己编写的带返回值的异步方法要使用Task<返回值类型>来表示返回值。异步方法(async方法)当中,如果是以下两种情况之一:1. await另一个异步方法2. 创建一个线程,并等待这个线程的信号这个async方法才会真的被作为异步方法处理,否则和同步方法没有区别。

Winform 异步async防止UI线程阻塞的方法

5、如图是一些函数对应的异步版本。这些异步版本和同步版本的区别是,创建了线程并等待线程信号。使用async和await方便了我们进行任务切换,但是追根溯源,每一个异步方法的根源上总是有新线程的创建。

Winform 异步async防止UI线程阻塞的方法

6、await关键字的使用位置灵活,如图是在using块之中使用。基本上传统的赋值,都可以使用await变成等待赋值。

Winform 异步async防止UI线程阻塞的方法

7、在async异步方法中,就可以方便的更新进度条了。注意,只有将所有耗时较长的异步方法调用都使用await关键字,才能保证UI进程每次遇到等待都返回继续响应用户操作,而不是卡在【某某_click】之中。

Winform 异步async防止UI线程阻塞的方法
  • 如何手动强制关联默认文件打开方式程序
  • SQL 2008“阻止保存要求重新创建表的更改”
  • Ubuntu怎么移除删除已配对的蓝牙手机设备
  • 电脑打开58同城全是文字怎么办
  • 怎么设置在IE浏览器中显示混合内容?
  • 热门搜索
    抗日战争手抄报 语文手抄报图片 38妇女节手抄报 法制安全手抄报 安全知识手抄报内容 春节手抄报资料 手抄报中秋节 关于宪法的手抄报 手抄报设计图 抗击病毒的手抄报