C# Async与Await的使用
来源:互联网 发布:云购源码 编辑:程序博客网 时间:2024/06/01 10:09
这个是.NET 4.5的特性,所以要求最低.NET版本为4.5。
看很多朋友还是使用的Thread来使用异步多线程操作,基本上看不见有使用Async、Await进行异步编程的。各有所爱吧,其实都可以。只要正确使用就行,不过还是写了这篇文章推荐大家使用Async、Await。 原因就是:可以跟写同步方法一样去异步编程。代码则就非常的清晰,就跟写普通的代码一样,不用关系如何去异步编程,也让很多初级程序员也能够异步编程了。下面是一个使用Thread 多线程实现的异步例子,以及一个使用Async与Await的异步例子,接下来我们再简单理解下Async与Await的相关技术说明。
Thread多线程异步编程例子
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("主线程测试开始..");
- Thread th = new Thread(ThMethod);
- th.Start();
- Thread.Sleep(1000);
- Console.WriteLine("主线程测试结束..");
- Console.ReadLine();
- }
- static void ThMethod()
- {
- Console.WriteLine("异步执行开始");
- for (int i = 0; i < 5; i++)
- {
- Console.WriteLine("异步执行" + i.ToString() + "..");
- Thread.Sleep(1000);
- }
- Console.WriteLine("异步执行完成");
- }
- }
以上代码运行效果如下图
使用Async与Await进行异步编程
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("主线程测试开始..");
- AsyncMethod();
- Thread.Sleep(1000);
- Console.WriteLine("主线程测试结束..");
- Console.ReadLine();
- }
- static async void AsyncMethod()
- {
- Console.WriteLine("开始异步代码");
- var result = await MyMethod();
- Console.WriteLine("异步代码执行完毕");
- }
- static async Task<int> MyMethod()
- {
- for (int i = 0; i < 5; i++)
- {
- Console.WriteLine("异步执行" + i.ToString() + "..");
- await Task.Delay(1000); //模拟耗时操作
- }
- return 0;
- }
- }
运行效果:
显而易见我们就跟写同步方法一样,完成了异步方法的编写,代码更清晰了。
只有拥有async才能在其内部使用await关键字。异步方法可以具有Task、Task<>或void的返回类型;
await关键字则是用于返回值是“可等待”类型(awaitable)的方法
0 0
- C# Async与Await的使用
- C# Async与Await的使用
- c# async、await的使用,异步方法
- Async 与Await的简单使用
- .NET中async与await的使用
- C#中的async与await
- C#的async和await
- C#的async和await
- C#的async和await
- 演示C#里的async和await的使用
- Async and await的使用
- Promise 、Async/Await的使用
- Promise、Async/Await的使用
- 异步爬虫: async/await 与 aiohttp的使用,以及例子
- C#里的async和await
- 说说C#的async和await
- 说说C#的async和await
- 说说C#的async和await
- 面试机器学习、大数据岗位时遇到的各种问题
- C++实现二位数组加减法
- Leetcode no. 96
- 1052: 最大报销额
- greenplum创建外部表笔记-readable篇
- C# Async与Await的使用
- 数学概念的理解
- hdu-1007-Quoit Design-求最小点距离、分治思想
- Myeclipse 安装Scala环境
- linux------虚拟机的桥接模式和NAT模式的区别
- Eclipse常用相关插件安装途径
- UVA - 11971 Polygon
- Android 截屏并保存至相册
- 大数据IMF传奇行动绝密课程第22课:RDD的依赖关系彻底解密