微软在C# 5中引入了async、await这两个异步编程的关键字,要使用这两个关键字需要你的IDE支持C#5.0语法,也就意味着你需要使用VS 2012版本以上IDE,或者在Vs2010卸载其编译器在重新安装,这并不是本文的重点,有需求的朋友点击这篇博客,现在都快接近2019年,VS2019 预览版都出来了,现在使用Vs2010确实有点更不上时代了,建议大家升级一下vs,其他问题可以自行百度谷歌解决下。
async和await带给我们的方便是巨大的,从代码的简洁或者处理UI阻塞问题,都是很便捷的,而XP系统最高只支持.Net 4.0,也就意味着,假如你编写的Winform程序使用了这两个关键字将不能在XP中,而目前很多系统仍然使用着XP,因此很有必要在.Net 4 环境下使用 async异步编程。
当我们创建一个.Net Framework 4.0的项目时候,在使用async 和 await的时候,代码如下:
static void Main(string[] args) { Console.WriteLine("异步方法调用前:" + Thread.CurrentThread.ManagedThreadId.ToString()); Test(); Console.WriteLine("异步方法调用后:" + Thread.CurrentThread.ManagedThreadId.ToString()); Console.Read(); } public async static void Test() { Console.WriteLine("异步方法等待前:" + Thread.CurrentThread.ManagedThreadId.ToString()); Console.WriteLine("开始等待:" + DateTime.Now.ToString()); await Wait(); Console.WriteLine("异步方法等待后:" + Thread.CurrentThread.ManagedThreadId.ToString()); Console.WriteLine("结束等待:" + DateTime.Now.ToString()); } public static Task Wait() { Action action = () => { Console.WriteLine("任务运行:" + Thread.CurrentThread.ManagedThreadId.ToString()); Thread.Sleep(2000); Console.WriteLine("任务运行后:" + Thread.CurrentThread.ManagedThreadId.ToString()); }; Task task = null; // task= TaskEx.Run(action); task = new Task(action); task.Start(); return task; }