C# 之 async / await
2024-10-19 05:05:57
直接看一个例子
private async void button1_Click(object sender, EventArgs e)
{
var t = Task.Run(() =>
{
Thread.Sleep(5000);
return "Hello";
});
string text = await t;
this.Text = text;
}
单击按钮后,程序执行到 string text = await t 会直接返回到调用方法的地方继续执行,t方法异步执行返回后为text赋值并继续执行执行 this.Text = text(回调在主线程执行),效果就是点击按钮后界面不会卡死,方法执行完后 this.Text 更改。
async修饰的方法返回值类型必须是 void、Task或Task<TResult>。方法内部必须含有await修饰的方法,如果方法内部没有await关键字修饰的表达式,哪怕函数被async修饰也只能算作同步方法,执行的时候也是同步执行的。
Task<TResult>是有返回值的, void和Task没有返回值,使用Task可以让外层函数拿到异步函数,从而调用await等待异步函数执行完毕。(个人理解)
https://www.cnblogs.com/zhaoshujie/p/11192036.html
最新文章
- Android studio安装
- JavaScript零基础学习系列一
- redis 数据结构一 之t_string
- css3学习总结6--CSS3字体
- css 关于两栏布局,左边固定,右边自适应
- uva 1030 - Image Is Everything(迭代更新)
- page-object使用(1)
- 新一代自平衡电动代步工具Solo wheel!
- accept: Invalid argument linux 网络编程
- Spring MVC 学习总结(一)——MVC概要与环境配置(IDea与Eclipse示例)
- Arch Linux 软件包的查询及清理
- python2.x版本与python3.x版本的区别以及运算符
- python 创建二维数组
- TCP/IP协议(一)网络基础知识 网络七层协议
- Apache的配置详解 带图
- Centos下SVN环境部署记录
- git(8):常用命令
- golang语言调试
- 再谈MySql索引
- Web Service-WSDL详解
热门文章
- 【Spring】Spring的事务管理 - 1、Spring事务管理概述(数据库事务、Spring事务管理的核心接口)
- rm: cannot remove `/tmp/localhost-mysql_cacti_stats.txt&#39;: Operation not permitted
- 【Nginx】使用keepalive和nginx搭载高可用
- Java开发工具类集合
- MySQL 5.6.35 索引优化导致的死锁案例解析
- 制作 Ubuntu 16.04 离线apt源
- 处理 K8S Orphaned pod found - but volume paths are still present on disk 孤儿pod
- Oracle 常用命令大全(持续更新)
- python 字典(formkey 建立 取值 赋值 删除 )
- (转载)微软数据挖掘算法:Microsoft Naive Bayes 算法(3)