C# async await 学习笔记1
由于我的开发工具为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相关推荐
- C# async await 学习笔记2
C# async await 学习笔记1(http://www.cnblogs.com/siso/p/3691059.html) 提到了ThreadId是一样的,突然想到在WinForm中,非UI线程 ...
- 多线程编程学习笔记——async和await(三)
接上文 多线程编程学习笔记--async和await(一) 接上文 多线程编程学习笔记--async和await(二) 五. 处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多 ...
- angular2 学习笔记 ( Rxjs, Promise, Async/Await 的区别 )
Promise 是 ES 6 Async/Await 是 ES 7 Rxjs 是一个 js 库 在使用 angular 时,你会经常看见这 3 个东西. 它们都和异步编程有关,有些情况下你会觉得用它们 ...
- ES6学习笔记(十六)async函数
1.含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖,号称异步的终极解决方案. 前文有一个 Gen ...
- Promise/async awit/fetch 学习笔记
Promise 一.Promise 1.then()方法 2.catch()方法 3.finally()方法(实际开发中并不常用) 4.Promise.resolve()和Promise.reject ...
- ASP.NET Core 2 学习笔记(七)路由
ASP.NET Core通过路由(Routing)设定,将定义的URL规则找到相对应行为:当使用者Request的URL满足特定规则条件时,则自动对应到相符合的行为处理.从ASP.NET就已经存在的架 ...
- DAY7-Python学习笔记
前记: 这几天在弄小程序,view页面的开发很简单,但是在加载图片上遇到了问题,小程序的大小不能超过2M,所以大部分的图片内容要通过request请求服务器来获取,这里之前学习小程序的时候是通过网站A ...
- Windows phone 8 学习笔记(8) 定位地图导航
Windows phone 8 学习笔记(8) 定位地图导航 原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控 ...
- ASP.NET Core 2 学习笔记(三)中间件
原文:ASP.NET Core 2 学习笔记(三)中间件 之前ASP.NET中使用的HTTP Modules及HTTP Handlers,在ASP.NET Core中已不复存在,取而代之的是Middl ...
最新文章
- 联想一体机用u盘装linux教程,联想ThinkCentre一体机如何u盘装系统教程
- 在编译内核时出现uudecode错误
- linux 反汇编目标文件,用于查看目标文件或可执行文件的组成信息的命令:objdump命令...
- 计算机桌面打开图像管理,如何给电脑桌面设置几张图片自动播放
- cmake安装mysql
- Android Browser学习九 快捷菜单模块: PieControl的架构
- ios查看帧率的软件_软件测试之性能测试(ios)——获取fps(流畅度)
- 招聘PHP聚合系统,Thinkphp5开发OA办公系统之招聘申请
- KYC (Know Your Customer) 综述篇
- DLL注入 + VEH 的方式处理异常
- 一个稳定、快速的云服务器——萤光云
- QQ音乐 vs 网易云音乐,用户体验哪家强?
- HTTP3 (QUIC) 协议
- 如何使用Tableau进行预测分析
- 香港证券监管机构发布STO详细指南
- 无线网络优化学习第一天
- IP、TCP、UDP首部详解
- 大华与巴斯勒相机实现单拍的不同
- 常见电子元器件失效概率统计
- 一文掌握运维绩效考核指标及实例参考
热门文章
- 干货 | 基于 BDD 理念的 UI 自动化测试在携程度假的应用
- 如果你陷入职业迷茫,就看看这些建议!
- 最近学习了 HTTP 连接池
- 史上最容易懂的云计算的前世今生
- Java线程详解(1)-概念与原理
- 关于反爬虫,看这一篇就够了 1
- 20. A *p=NULL,p 可以调用 A 类里面的函数嘛?
- jQuery面试题-区别mouseover和mouseenter的不同之处(看了也许对你有好处)
- linux 本地做yum源,linux——制作本地yum源
- 怎么修改_PDF怎么修改文字?其实修改PDF内容很简单