博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Async与Await的使用
阅读量:5054 次
发布时间:2019-06-12

本文共 1500 字,大约阅读时间需要 5 分钟。

 转自:http://www.cnblogs.com/mushroom/p/4575417.html

          http://www.cnblogs.com/zhili/archive/2013/05/15/Csharp5asyncandawait.html

这个是.NET 4.5的特性,所以要求最低.NET版本为4.5。

看很多朋友还是使用的Thread来使用异步多线程操作,基本上看不见有使用Async、Await进行异步编程的。各有所爱吧,其实都可以。只要正确使用就行,不过还是写了这篇文章推荐大家使用Async、Await。 原因就是:可以跟写同步方法一样去异步编程。代码则就非常的清晰,就跟写普通的代码一样,不用关系如何去异步编程,也让很多初级程序员也能够异步编程了。下面是一个使用Thread 多线程实现的异步例子,以及一个使用Async与Await的异步例子,接下来我们再简单理解下Async与Await的相关技术说明。

Thread多线程异步编程例子

  1. class Program
  2. {
  3.     static void Main(string[] args)
  4.     {
  5.         Console.WriteLine("主线程测试开始..");
  6.         Thread th = new Thread(ThMethod);
  7.         th.Start();
  8.         Thread.Sleep(1000);
  9.         Console.WriteLine("主线程测试结束..");
  10.         Console.ReadLine();
  11.     }
  12.  
  13.  
  14.     static void ThMethod()
  15.     {
  16.         Console.WriteLine("异步执行开始");
  17.         for (int i = 0; i < 5; i++)
  18.         {
  19.             Console.WriteLine("异步执行" + i.ToString() + "..");
  20.             Thread.Sleep(1000);
  21.         }
  22.         Console.WriteLine("异步执行完成");
  23.     }
  24. }

以上代码运行效果如下图

 

使用Async与Await进行异步编程

  1. class Program
  2. {
  3.     static void Main(string[] args)
  4.     {
  5.         Console.WriteLine("主线程测试开始..");
  6.         AsyncMethod();
  7.         Thread.Sleep(1000);
  8.         Console.WriteLine("主线程测试结束..");
  9.         Console.ReadLine();
  10.     }
  11.  
  12.     static async void AsyncMethod()
  13.     {
  14.         Console.WriteLine("开始异步代码");
  15.         var result = await MyMethod();
  16.         Console.WriteLine("异步代码执行完毕");
  17.     }
  18.  
  19.     static async Task<int> MyMethod()
  20.     {
  21.         for (int i = 0; i < 5; i++)
  22.         {
  23.             Console.WriteLine("异步执行" + i.ToString() + "..");
  24.             await Task.Delay(1000); //模拟耗时操作
  25.         }
  26.         return 0;
  27.     }
  28. }

运行效果:

显而易见我们就跟写同步方法一样,完成了异步方法的编写,代码更清晰了。

只有拥有async才能在其内部使用await关键字。异步方法可以具有Task、Task<>或void的返回类型;

await关键字则是用于返回值是“可等待”类型(awaitable)的方法

转载于:https://www.cnblogs.com/chengjun/p/5366047.html

你可能感兴趣的文章
Snow Boots I
查看>>
HDU - 1796 How many integers can you find (容斥原理)
查看>>
Hexo里如何添加广告
查看>>
数据结构与算法--归并排序
查看>>
Comparable和Comparator的区别
查看>>
《C++中线程安全并且高效的singleton》
查看>>
ado.net(1)
查看>>
NUnit+mock+moq单元测试
查看>>
Telnet协议
查看>>
MyBatis MyBatis Generator入门
查看>>
Mac OS X系统 用dd命令将iso镜像写入u盘
查看>>
python_112_断言
查看>>
Android内存泄露
查看>>
xml
查看>>
Android开发之旅:环境搭建及HelloWorld(转)
查看>>
面试常见算法
查看>>
C# WinfForm 控件之dev报表 XtraReport (四) 动态绑定主从关系表
查看>>
hdu_4651_Partition(公式)
查看>>
Java中的多线程
查看>>
32. Longest Valid Parentheses
查看>>