.NET async await 关键字最简单例子
2012-08-18 16:53
357 查看
C# 5.0 即将迎来async和await关键字,事实上现在已经可以体验使用了,下载 Microsoft Visual Studio Async CTP 后安装,即可在VS2010中体验这两个关键字的乐趣。(Microsoft Visual Studio Async CTP 可能和一些VS的补丁有冲突,详细下载安装情况,请查看/article/6349703.html
现在我们把注意力回到这两个关键字的使用上来,大家一定知道这两个关键字是用来进行异步操作的,其实,这两个关键字没有什么奥秘可言,
async必须加在函数声明处,如果不加async关键字,函数内部不能使用await关键字,仅仅如此
await只能用来等待一个Task或者Task<T>进行异步执行返回,仅仅如此
关于Task这个类的使用和详细情况,请查阅.NET 4.0并行编程,在此简单的认为Task就是一个线程。
现在网上的例子,千篇一律都是操作WebClient下载图片之类的,这种例子实在无法让我们满足,怎么在自己的代码里面使用这两个关键字呢?下面就是最简单的例子
Test函数就用最简单的方法使用了这两个关键字,执行这段代码,首先输出“Main”,然后3秒钟后会输出“1”。
一些后话:
1,在使用await时,要千万小心,其实可以把这个关键字看做yield的另一个表现形式,也就是说,这个关键字会导致函数的中途结束,比如你在Main函数中如果使用了这个关键字,那恭喜你,await之后的代码都运行不到程序就结束了,因为函数已经临时返回了。
2,await对应的Task必须先Start,其实可以把Task看做一个多线程,多线程都没有Start,await当然也不会得到结果,await之后的代码自然都不会有机会调用到。
现在我们把注意力回到这两个关键字的使用上来,大家一定知道这两个关键字是用来进行异步操作的,其实,这两个关键字没有什么奥秘可言,
async必须加在函数声明处,如果不加async关键字,函数内部不能使用await关键字,仅仅如此
await只能用来等待一个Task或者Task<T>进行异步执行返回,仅仅如此
关于Task这个类的使用和详细情况,请查阅.NET 4.0并行编程,在此简单的认为Task就是一个线程。
现在网上的例子,千篇一律都是操作WebClient下载图片之类的,这种例子实在无法让我们满足,怎么在自己的代码里面使用这两个关键字呢?下面就是最简单的例子
class Program { private static async void Test() { Task<int> t = new Task<int>(() => { Thread.Sleep(3000); return 1; }); t.Start(); int tr = await t; Console.WriteLine(tr); } static void Main(string[] args) { Test(); Console.WriteLine("Main"); Console.ReadKey(); } }
Test函数就用最简单的方法使用了这两个关键字,执行这段代码,首先输出“Main”,然后3秒钟后会输出“1”。
一些后话:
1,在使用await时,要千万小心,其实可以把这个关键字看做yield的另一个表现形式,也就是说,这个关键字会导致函数的中途结束,比如你在Main函数中如果使用了这个关键字,那恭喜你,await之后的代码都运行不到程序就结束了,因为函数已经临时返回了。
2,await对应的Task必须先Start,其实可以把Task看做一个多线程,多线程都没有Start,await当然也不会得到结果,await之后的代码自然都不会有机会调用到。
相关文章推荐
- .NET async await 关键字最简单例子
- .NET async await 关键字最简单例子
- .net 4.5 async await 简单用法
- 一个async和await 关键字的简单入门
- .NET/C# 使用async和await关键字调用异步方法
- ASP.NET WebForm中用async/await实现异步出人意料的简单
- .NET 4.5 使用async和await关键字调用异步方法
- Asp.Net Ajax最简单的例子
- ASP.NET中的WebService一个简单的例子
- 为什么我们要使用Async、Await关键字
- ASP.NET ATLAS 的一个简单例子
- 使用asp.net进行多关键字查询的例子
- 收了100元辛苦费,写了一个最简单的C#ASP.NET的3层架构例子代码,源码是通过代码生成器生成的【写程序的效率神奇的高】
- ASP.NET 上的 Async/Await 简介
- asp.net ajax的简单例子
- .NET C# 创建WebService服务简单的例子
- 使用asp.net进行多关键字查询的例子
- mxnet(gluon) 实现DQN简单小例子
- MagicAjax.Net的使用要点和简单例子
- ASP.NET MVC 中最简单的上传图片、生成缩略图的小例子