理论:

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();
MessageBox.Show("F1 Run");
return "F1";
});
}
static Task<string> F2Async()
{
MessageBox.Show("F2 Start");
return Task.Run(() =>
{
System.Threading.Thread.Sleep();
MessageBox.Show("F2 Run");
return "F2";
}); }

2:C#TPL探秘的更多相关文章

  1. C#服务器获取客户端IP地址以及归属地探秘

    背景:博主本是一位Windows桌面应用程序开发工程师,对网络通信一知半解.一日老婆逛完某宝,问:"为什么他们知道我的地址呢,他们是怎么获取我的地址的呢?" 顺着这个问题我们的探秘 ...

  2. Composer概述及其自动加载探秘

    composer概述 一开始,最吸引我的当属 Composer 了,因为之前从没用过 Composer . Composer 是PHP中用来管理依赖关系的工具,你只需在自己的项目中声明所依赖的外部工具 ...

  3. 基于AngularJS的个推前端云组件探秘

    基于AngularJS的个推前端云组件探秘 AngularJS是google设计和开发的一套前端开发框架,帮助开发人员简化前端开发的负担.AngularJS将帮助标准化的开发web应用结构并且提供了针 ...

  4. .NET跨平台之旅:探秘 dotnet run 如何运行 .NET Core 应用程序

    自从用 dotnet run 成功运行第一个 "Hello world" .NET Core 应用程序后,一直有个好奇心:dotnet run 究竟是如何运行一个 .NET Cor ...

  5. ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘

    开篇:经历了上一篇<aspx与服务器控件探秘>后,我们了解了aspx和服务器控件背后的故事.这篇我们开始走进WebForm状态保持的一大法宝—ViewState,对其刨根究底一下.然后,再 ...

  6. ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘

    开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...

  7. 探秘Tomcat——连接器和容器的优雅启动

    前言: 上篇<探秘Tomcat——启动篇>粗线条的介绍了在tomcat在启动过程中如何初始化Bootstrap类,加载并执行server,从而启动整个tomcat服务,一直到我们看到控制台 ...

  8. 探秘Tomcat——启动篇

    tomcat作为一款web服务器本身很复杂,代码量也很大,但是模块化很强,最核心的模块还是连接器Connector和容器Container.具体请看下图: 从图中可以看出 a. 高亮的两块是Conne ...

  9. 探秘Tomcat——从一个简陋的Web服务器开始

    前言: 无论是之前所在实习单位小到一个三五个人做的项目,还是如今一个在做的百人以上的产品,一直都能看到tomcat的身影.工作中经常遇到的操作就是启动和关闭tomcat服务,或者修改了摸个java文件 ...

随机推荐

  1. Eutils用法总结

    好久没更新了,这里都长草了... 总结下Eutils的用法,参考<E-utilities Quick Start>,没时间看英文的可以参考下. 简介 Eutils全称是The Entrez ...

  2. 关于LaaS,PaaS,SaaS一些个人的理解

    关于LaaS,PaaS,SaaS一些个人的理解 其实如果从整个程序运营的角度来考虑比较好 第一个LaaS  这个也叫做Haas   就是硬件或者基础设置即服务 比如现在的   aws azure  阿 ...

  3. python的接口

    写法一: class Payment: def pay(self, money): raise NotImplementedError class Alipay(Payment): def pay(s ...

  4. VUE项目 - IE报vuex requires a Promise polyfill in this browser问题解决

    第一步: 安装 babel-polyfill . babel-polyfill可以模拟ES6使用的环境,可以使用ES6的所有新方法 npm install --save babel-polyfill ...

  5. Apache Hive 安装文档

    简介: Apache hive 是基于 Hadoop 的一个开源的数据仓库工具,可以将结构化的数据文件映射为一张数据库表, 并提供简单的sql查询功能,将 SQL 语句转换为 MapReduce 任务 ...

  6. 字段名与属性名不一致问题 通过resultMap解决

  7. Why Go's Declaration Syntax is better than C++?

    [Why Go's Declaration Syntax is better than C++?] Newcomers to Go wonder why the declaration syntax ...

  8. Axure 原型图 (转)

    Axure RP是很有名的一个界面原型设计工具,可以灵活快捷的对C/S.B/S程序设计原型. 近期我要开发一个Android客户端,也打算使用Axure RP设计原型. 下载地址:http://pan ...

  9. 命名空间p方式的属性注入

    ---------------------siwuxie095 命名空间 p 方式的属性注入 命名空间 p 方式的属性注入是 Spring 2.x 版本后提供的方式 1.编写一个普通类 Book.ja ...

  10. 5- 如何把MyEclipse中的web项目导入到Eclipse中运行

    from: 如何把MyEclipse中的web项目导入到Eclipse中运行 2016年09月12日 20:57:51 dancheren 阅读数:35329 标签: eclipse 更多 个人分类: ...