2:C#TPL探秘

简介: 理论:1、 只要方法是 Task类型的返回值,都可以用 await 来等待调用获取返回值。2、 如果一个返回 Task类型的方法被标记了 async,那么只要方法内部直接 return T 这个 类型的实例就可以。

理论:

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<string> task1 = F1Async();
            Task<string> task2 = F2Async();
            string i1 = await task1;//这里保证task1的任务一定执行完,并不是这里才执行异步任务。
            MessageBox.Show("i2=" + i1);
            string i2 = await task2;
            MessageBox.Show("i2=" + i2);
            #endregion
        }
        static Task<string> F1Async()
        {
            MessageBox.Show("F1 Start");
            return Task.Run(() =>
            {
                System.Threading.Thread.Sleep(1000);
                MessageBox.Show("F1 Run");
                return "F1";
            });
        }
        static Task<string> F2Async()
        {
            MessageBox.Show("F2 Start");
            return Task.Run(() =>
            {
                System.Threading.Thread.Sleep(2000);
                MessageBox.Show("F2 Run");
                return "F2";
            });

        }
View Code

 

目录
相关文章
|
9月前
|
前端开发
前端学习笔记202305学习笔记第三十三天-js-执行上下文
前端学习笔记202305学习笔记第三十三天-js-执行上下文
19 0
|
5天前
|
前端开发
第二十七章 案例TodoList 之总结
第二十七章 案例TodoList 之总结
|
5天前
|
前端开发 数据挖掘
第二十章 案例TodoList之动态数据
第二十章 案例TodoList之动态数据
|
11月前
|
JavaScript 前端开发 API
【JavaScript】这一次,彻底搞懂 JS 异步及其演进历程 ~(一)
【JavaScript】这一次,彻底搞懂 JS 异步及其演进历程 ~(一)
|
11月前
|
前端开发 JavaScript API
【JavaScript】这一次,彻底搞懂 JS 异步及其演进历程 ~(二)
【JavaScript】这一次,彻底搞懂 JS 异步及其演进历程 ~(二)
|
11月前
|
JSON 前端开发 JavaScript
【JavaScript】这一次,彻底搞懂 JS 异步及其演进历程 ~(三)
【JavaScript】这一次,彻底搞懂 JS 异步及其演进历程 ~(三)
|
Web App开发 JavaScript 前端开发
Sea.js:简单、极致的模块化Web开发体验
Sea.js 是一款现代的用于Web开发的模块加载工具,提供简单、极致的模块化体验。Sea.js 由阿里、腾讯等公司共同维护。
596 0
Sea.js:简单、极致的模块化Web开发体验
|
JavaScript 前端开发
#yyds干货盘点# 【js学习笔记四十一】单体模式
#yyds干货盘点# 【js学习笔记四十一】单体模式
81 0
#yyds干货盘点# 【js学习笔记四十一】单体模式
|
数据采集 JavaScript 中间件