博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2:C#TPL探秘
阅读量:6276 次
发布时间:2019-06-22

本文共 1426 字,大约阅读时间需要 4 分钟。

理论:

1、 只要方法是 Task类型的返回值,都可以用 await 来等待调用获取返回值。

2、 如果一个返回 Task类型的方法被标记了 async,那么只要方法内部直接 return T 这个 类型的实例就可以。

3、 一个返回 Task类型的方法没有被标记了 async,那么需要方法内部直接 Task 实例。

实践(自己添加一个按钮):

private async void button1_Click(object sender, EventArgs e)        {            #region 方法一:            //string i1 = await F1Async();//保证异步任务执行完            //MessageBox.Show("i1=" + i1);            //string i2 = await F2Async();            //MessageBox.Show("i2=" + i2);            #endregion            #region 方法二:            Task
task1 = F1Async(); Task
task2 = F2Async(); string i1 = await task1;//这里保证task1的任务一定执行完,并不是这里才执行异步任务。 MessageBox.Show("i2=" + i1); string i2 = await task2; MessageBox.Show("i2=" + i2); #endregion } static Task
F1Async() { MessageBox.Show("F1 Start"); return Task.Run(() => { System.Threading.Thread.Sleep(1000); MessageBox.Show("F1 Run"); return "F1"; }); } static Task
F2Async() { MessageBox.Show("F2 Start"); return Task.Run(() => { System.Threading.Thread.Sleep(2000); MessageBox.Show("F2 Run"); return "F2"; }); }
View Code

 

转载地址:http://bggpa.baihongyu.com/

你可能感兴趣的文章
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>