首页 > 其他 > 详细

任务Task系列之异步编程(async and await)

时间:2018-08-01 21:55:48      阅读:208      评论:0      收藏:0      [点我收藏+]

  异步:异步操作通常用于执行完成时间可能较长的任务,如打开大文件、连接远程计算机或查询数据库=异步操作在主应用程序线程以外的线程中执行。应用程序调用方法异步执行某个操作时,应用程序可在异步方法执行其任务时继续执行。

  异步与多线程的关系:我们已经知道, 异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理。简单的说就是:异步线程是由线程池负责管理,而多线程,我们可以自己控制,当然在多线程中我们也可以使用线程池。

  异步示例:

 1 static void Main(string[] args)
 2         {
 3             Console.WriteLine(SumValue().Result);
 4             Console.ReadLine();
 5         }
 6 
 7         static async Task<Int32> SumValue()
 8         {
 9             Int32 result = 0;
10             var t1 = NumValue(50);
11             var t2 = NumValue(100);
12             result = await t1 + await t2;
13             return result;
14         }
15         static async Task<Int32> NumValue(Int32 n)
16         {
17             Int32 sum = 0;
18             await Task.Run(() => {
19                 for (int i = 0; i < n; i++)
20                 {
21                     sum += i;
22                 }
23             });
24             return sum;
25         }

  运行结果:

  技术分享图片

  注意:

  • 凡是使用await关键字的方法,都必须打上async标记。
  • async表示方法内有异步方法,调用async方法,会立刻另起线程执行。
  • await只是显示等待线程结束。await表示等待异步方法执行完,并取返回值。

任务Task系列之异步编程(async and await)

原文:https://www.cnblogs.com/mohanchen/p/9403861.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!