news 2026/6/10 3:36:22

C#异步编程之async、await

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#异步编程之async、await

前言

在C#编程种经常听过异步编程,本文就来以一个实际案例来讲解异步编程中async、await的用法。我们要实现也给需求,点击界面按钮后,五秒后界面的Lable控件的值被赋值为“123”,下面分别介绍4种方法。

1、方法1

下面的代码中UI线程卡5秒后,label1的值被更新为“123”,最终的结果虽然实现了,但是当你点击按钮后,界面也会卡5秒。

privatevoidbutton1_Click(objectsender,EventArgse){Thread.Sleep(5000);label1.Text="123";}

2、方法2

下面的代码由于 Task.Delay是异步任务,所以不卡阻塞UI线程,但是同时 label1也会被立即更新,所以并不能实现5秒后更新UI的功能。
private void button2_Click(object sender, EventArgs e)
{
Task.Delay(5000);//不会阻塞当前线程
label1.Text = “123”;
}

3、方法3

下面的代码使用 Task.Run让任务处在线程池中运行,所以也不会卡界面,,并且延时5秒后,可以更新Lable的Text属性,这里需要注意的是因为Task.Run里面的任务已经不在UI线程了,所以需要使用委托跨线程更新界面,这个方法可以达到我们的目的而且不卡界面,但是代码量挺多。

privatevoidbutton3_Click(objectsender,EventArgse){Task.Run(()=>{Thread.Sleep(5000);this.Invoke(newAction(()=>{label1.Text="123";}));});}

4、方法4

下面的代码中,使用async关键字将方法标记为异步方法,然后使用await关键字标记一个任务,被await关键字标记的任务代码执行后,代码立即切换回调用异步方法的线程(这里是UI线程),并且不会立即执行await所在的方法中在await标记的任务之后的代码,也就是下图中的 label1.Text = “123”,这句更新界面的代码要等到await关键字标记的任务完成以后才会执行,而且执行的时候已经切换回UI线程,所以这里也不需要跨线程更新界面。所以下面的代码结合async和await关键字就可以很好的实现异步方法更新界面并且不让界面卡顿。

privateasyncvoidbutton4_Click(objectsender,EventArgse){awaitTask.Delay(5000);label1.Text="123";}

马工撰写的年入30万+C#上位机项目实战必备教程(点击下方链接即可访问文章目录)

1、《C#串口通信从入门到精通》
2、《C#与PLC通信从入门到精通 》
3、《C# Modbus通信从入门到精通》
4、《C#Socket通信从入门到精通 》
5、《C# MES通信从入门到精通》
6、《winform控件从入门到精通》
7、《C#操作MySql数据库从入门到精通》

以上教程CSDN订阅已超过2000+~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 1:11:23

论文生成慢半拍?十大AI工具,AIGC降重+快速出初稿

论文生成慢半拍?十大AI工具,AIGC降重快速出初稿�� AI工具性能速览表工具名称核心功能处理时间AI生成率控制适配检测平台askpaper降AIGC率降重同步20分钟个位数知网/格子达/维普秒篇AI痕迹深度弱化20分钟个位数知网/格子达/维普aic…

作者头像 李华
网站建设 2026/6/9 1:56:46

研究生论文写作工具推荐:10大平台+开题排名

研究生论文写作工具推荐:10大平台开题排名 核心工具对比速览 工具名称 核心优势 处理时间 适用场景 特色功能 aibiye 精准适配知网/维普规则 20分钟 学位论文降重 AIGC查重降重一体化 aicheck AI痕迹深度消除 15-30分钟 期刊投稿 学术术语保护机制 …

作者头像 李华
网站建设 2026/6/2 1:02:12

卡在学历的开发者困境,一个 Vue 开发者的60天求职之路【一】

今天是失业的第60天。过去一个月,我投出90多份简历,主动联系450位招聘方,收到了10次面试机会,全部认真完成面试。 理想很丰满,现实很骨感,结果却如出一辙:有的止步于背调环节——技术面顺利通过…

作者头像 李华
网站建设 2026/6/6 10:54:55

QNetworkReply-QNetworkAccessManager-put-内存申请注意事项

展示 reply manager->put(request, ftpsendfile);简介 在Qt C中执行manager->put(request, ftpsendfile)时,内存管理涉及多个层面,需结合Qt对象模型、网络模块特性及C内存管理规则分析。以下从内存申请点和回收策略两方面详细说明: 内…

作者头像 李华
网站建设 2026/6/5 16:54:49

威斯康星大学麦迪逊分校课程数据集成数据集:193个学科领域超9千门课程的全面教学信息资源

威斯康星大学麦迪逊分校课程数据集成数据集:193个学科领域超9千门课程的全面教学信息资源 引言与背景 威斯康星大学麦迪逊分校课程数据集成数据集是一个综合性、权威性的高等教育教学资源库,完整记录了该校丰富的课程体系、精细的教学安排以及全面的学术…

作者头像 李华
网站建设 2026/6/8 23:45:48

计算机毕业设计springboot基于协同过滤算法的新闻推荐系统 基于Spring Boot框架与协同过滤算法的新闻个性化推荐系统设计 Spring Boot驱动的新闻推荐系统

计算机毕业设计springboot基于协同过滤算法的新闻推荐系统9k0339(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网的飞速发展,新闻信息的海量增长给用户带来…

作者头像 李华