.NET实现异步编程async和await
await和async是.NET Framework4.5框架、C#5.0语法里面出现的,await和async是语法糖。
注意:
1、async出现在方法的声明里面,任何一个方法都可以增加async。
2、await放在Task前面,async和await是成对出现的,只有async是没有意义的,只有await是报错的。
只有async是没有意义的。
只有await是报错的。
3、await 只能放在task前面,不推荐void返回值,使用Task来代替。Task和Task<T>能够使用await, Task.WhenAny, Task.WhenAll等方式组合使用。Async Void 不行
private static async Task Return() { //主线程执行 Console.WriteLine($"NoReturn Sleep before await,ThreadId={Thread.CurrentThread.ManagedThreadId}"); TaskFactory taskFactory = new TaskFactory(); Task task = taskFactory.StartNew(() => { Console.WriteLine($"NoReturn Sleep before,ThreadId={Thread.CurrentThread.ManagedThreadId}"); Thread.Sleep(3000); Console.WriteLine($"NoReturn Sleep after,ThreadId={Thread.CurrentThread.ManagedThreadId}"); }); //主线程到这里就返回了,执行主线程任务 await task; //这个回调的线程是不确定的:可能是主线程 可能是子线程 也可能是其他线程 Console.WriteLine($"NoReturn Sleep after await,ThreadId={Thread.CurrentThread.ManagedThreadId}"); }
到此这篇关于.NET实现异步编程async和await的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)
对于需要用asp.net 字母,随机数字,随机字母+数字生成随机码的朋友用的到2008-11-11.NET Core 3.0之创建基于Consul的Configuration扩展组件
在本文里小编给大家分享了关于.NET Core 3.0之创建基于Consul的Configuration扩展组件相关知识点,需要的朋友们学习下。2019-05-05利用noesis.Javascript开源组件.Net中执行javascript脚本
利用Noesis.Javascript开源组件可以做到在.net中执行js脚本,同时js脚本也能调用C#函数。这个组件的获得方式:在NuGet中输入搜索"Noesis"就能找到,我们来做个搜索功能:用户能够在textbox中输入js脚本来筛选list记录2013-12-12
最新评论