直接看一个例子

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

最新文章

  1. Android studio安装
  2. JavaScript零基础学习系列一
  3. redis 数据结构一 之t_string
  4. css3学习总结6--CSS3字体
  5. css 关于两栏布局,左边固定,右边自适应
  6. uva 1030 - Image Is Everything(迭代更新)
  7. page-object使用(1)
  8. 新一代自平衡电动代步工具Solo wheel!
  9. accept: Invalid argument linux 网络编程
  10. Spring MVC 学习总结(一)——MVC概要与环境配置(IDea与Eclipse示例)
  11. Arch Linux 软件包的查询及清理
  12. python2.x版本与python3.x版本的区别以及运算符
  13. python 创建二维数组
  14. TCP/IP协议(一)网络基础知识 网络七层协议
  15. Apache的配置详解 带图
  16. Centos下SVN环境部署记录
  17. git(8):常用命令
  18. golang语言调试
  19. 再谈MySql索引
  20. Web Service-WSDL详解

热门文章

  1. 【Spring】Spring的事务管理 - 1、Spring事务管理概述(数据库事务、Spring事务管理的核心接口)
  2. rm: cannot remove `/tmp/localhost-mysql_cacti_stats.txt&#39;: Operation not permitted
  3. 【Nginx】使用keepalive和nginx搭载高可用
  4. Java开发工具类集合
  5. MySQL 5.6.35 索引优化导致的死锁案例解析
  6. 制作 Ubuntu 16.04 离线apt源
  7. 处理 K8S Orphaned pod found - but volume paths are still present on disk 孤儿pod
  8. Oracle 常用命令大全(持续更新)
  9. python 字典(formkey 建立 取值 赋值 删除 )
  10. (转载)微软数据挖掘算法:Microsoft Naive Bayes 算法(3)