由于我的开发工具为vs.net 2010(.net 4.0),需先做以下两步才能进行:

1.下载并安装Async CTP (http://www.microsoft.com/en-us/download/details.aspx?id=9983)

2.添加AsyncCtpLibrary.dll的引用,我用的是win7在(C:\Users\Administrator\Documents\Microsoft Visual Studio Async CTP\Samples)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;namespace ConsoleApplication1
{class Program{static Task<string> LongTimeTask(){          Console.WriteLine("LongTimeTask开始:" + DateTime.Now.ToString() + "  ThreadId:" + Thread.CurrentThread.ManagedThreadId);Task<string> task = new Task<string>(() => { Thread.Sleep(5000); return "这是任务返回值"; });task.Start();Console.WriteLine("LongTimeTask结束:" + DateTime.Now.ToString());return task;}static async void AsyncCall(){Console.WriteLine("AsyncCall开始:" + DateTime.Now.ToString() + "  ThreadId:" + Thread.CurrentThread.ManagedThreadId);string result = await LongTimeTask(); //await调用的方法需要返回Task或Task<T>,且调用await所在的方法要有async关键字Console.WriteLine("AsyncCall:" + result);Console.WriteLine("AsyncCall结束:" + DateTime.Now.ToString());}   static void Main(string[] args){Console.WriteLine("Main开始:" + DateTime.Now.ToString() + "  ThreadId:" +Thread.CurrentThread.ManagedThreadId);AsyncCall();   Console.WriteLine("Main结束:" + DateTime.Now.ToString());      Console.ReadLine();}}
}

运行结果:

不知大家注意到,里面的ThreadId是一致的。

需要注意的是,并不是加了async,就是异步了(而是得里面有调用await方法),例如,下面其实是同步执行的

 static async void SyncCall(){Thread.Sleep(5000);}static void Main(string[] args){Console.WriteLine("Main开始:" + DateTime.Now.ToString());// AsyncCall();
            SyncCall();Console.WriteLine("Main结束:" + DateTime.Now.ToString());Console.ReadLine();}

转载于:https://www.cnblogs.com/siso/p/3691059.html

C# async await 学习笔记1相关推荐

  1. C# async await 学习笔记2

    C# async await 学习笔记1(http://www.cnblogs.com/siso/p/3691059.html) 提到了ThreadId是一样的,突然想到在WinForm中,非UI线程 ...

  2. 多线程编程学习笔记——async和await(三)

    接上文 多线程编程学习笔记--async和await(一) 接上文 多线程编程学习笔记--async和await(二) 五.   处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多 ...

  3. angular2 学习笔记 ( Rxjs, Promise, Async/Await 的区别 )

    Promise 是 ES 6 Async/Await 是 ES 7 Rxjs 是一个 js 库 在使用 angular 时,你会经常看见这 3 个东西. 它们都和异步编程有关,有些情况下你会觉得用它们 ...

  4. ES6学习笔记(十六)async函数

    1.含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖,号称异步的终极解决方案. 前文有一个 Gen ...

  5. Promise/async awit/fetch 学习笔记

    Promise 一.Promise 1.then()方法 2.catch()方法 3.finally()方法(实际开发中并不常用) 4.Promise.resolve()和Promise.reject ...

  6. ASP.NET Core 2 学习笔记(七)路由

    ASP.NET Core通过路由(Routing)设定,将定义的URL规则找到相对应行为:当使用者Request的URL满足特定规则条件时,则自动对应到相符合的行为处理.从ASP.NET就已经存在的架 ...

  7. DAY7-Python学习笔记

    前记: 这几天在弄小程序,view页面的开发很简单,但是在加载图片上遇到了问题,小程序的大小不能超过2M,所以大部分的图片内容要通过request请求服务器来获取,这里之前学习小程序的时候是通过网站A ...

  8. Windows phone 8 学习笔记(8) 定位地图导航

    Windows phone 8 学习笔记(8) 定位地图导航 原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控 ...

  9. ASP.NET Core 2 学习笔记(三)中间件

    原文:ASP.NET Core 2 学习笔记(三)中间件 之前ASP.NET中使用的HTTP Modules及HTTP Handlers,在ASP.NET Core中已不复存在,取而代之的是Middl ...

最新文章

  1. 联想一体机用u盘装linux教程,联想ThinkCentre一体机如何u盘装系统教程
  2. 在编译内核时出现uudecode错误
  3. linux 反汇编目标文件,用于查看目标文件或可执行文件的组成信息的命令:objdump命令...
  4. 计算机桌面打开图像管理,如何给电脑桌面设置几张图片自动播放
  5. cmake安装mysql
  6. Android Browser学习九 快捷菜单模块: PieControl的架构
  7. ios查看帧率的软件_软件测试之性能测试(ios)——获取fps(流畅度)
  8. 招聘PHP聚合系统,Thinkphp5开发OA办公系统之招聘申请
  9. KYC (Know Your Customer) 综述篇
  10. DLL注入 + VEH 的方式处理异常
  11. 一个稳定、快速的云服务器——萤光云
  12. QQ音乐 vs 网易云音乐,用户体验哪家强?
  13. HTTP3 (QUIC) 协议
  14. 如何使用Tableau进行预测分析
  15. 香港证券监管机构发布STO详细指南
  16. 无线网络优化学习第一天
  17. IP、TCP、UDP首部详解
  18. 大华与巴斯勒相机实现单拍的不同
  19. 常见电子元器件失效概率统计
  20. 一文掌握运维绩效考核指标及实例参考

热门文章

  1. 干货 | 基于 BDD 理念的 UI 自动化测试在携程度假的应用
  2. 如果你陷入职业迷茫,就看看这些建议!
  3. 最近学习了 HTTP 连接池
  4. 史上最容易懂的云计算的前世今生
  5. Java线程详解(1)-概念与原理
  6. 关于反爬虫,看这一篇就够了 1
  7. 20. A *p=NULL,p 可以调用 A 类里面的函数嘛?
  8. jQuery面试题-区别mouseover和mouseenter的不同之处(看了也许对你有好处)
  9. linux 本地做yum源,linux——制作本地yum源
  10. 怎么修改_PDF怎么修改文字?其实修改PDF内容很简单