zoukankan      html  css  js  c++  java
  • .Net 4.5 的async 和await 的简单理解使用

    原文地址:http://www.cnblogs.com/HJL-Blog/p/4432632.html

    所谓的异步编程是利用CPU空闲时间和多核的特性,它所返回的Task或Task<TResult>是对await的一个承诺,当任务执行完毕后返回一个结果给接收者

    • 方法签名包含一个 Async 或 async 修饰符。

    • 按照约定,异步方法的名称以“Async”后缀结尾。

    • 返回类型为下列类型之一:

      • 如果你的方法有操作数为 TResult 类型的返回语句,则为 Task<TResult>

      • 如果你的方法没有返回语句或具有没有操作数的返回语句,则为 Task

      • 如果你编写的是异步事件处理程序,则为 Void(Visual Basic 中为 Sub)。

      有关详细信息,请参见本主题后面的“返回类型和参数”。

    • 方法通常包含至少一个 await 表达式,该表达式标记一个点,在该点上,直到等待的异步操作完成方法才能继续。 同时,将方法挂起,并且控件返回到方法的调用方。(这里所谓的挂起就是上文所提到的承诺,异步方法承诺会给调用方一个结果)

     1         static void Main(string[] args)
     2         {
     3             Console.WriteLine("主方法开始");
     4             ExeAsync();
     5             Console.WriteLine("主方法结束");
     6 
     7             Console.ReadKey();
     8         }
     9         /// <summary>
    10         /// 需要去执行耗时的异步方法
    11         /// </summary>
    12         static async void ExeAsync()
    13         {
    14             Console.WriteLine("异步开始...");
    15             //等待异步方法执行完后,才继续执行下一步,
    16             //但是这里会返回给调用者继续执行主线程方法
    17             int res = await GoAsync();
    18             Console.WriteLine("异步结束...res: " + res);
    19         }
    20         /// <summary>
    21         /// 异步耗时方法
    22         /// </summary>
    23         /// <returns></returns>
    24         static async Task<int> GoAsync()
    25         {
    26             for (int i = 0; i < 2; i++)
    27             {
    28                 //模拟耗时操作
    29                 HttpClient client = new HttpClient();
    30                 Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
    31                 Console.WriteLine(DateTime.Now.Millisecond + " 异步 " + (await getStringTask).Length);
    32             }
    33             return 100;
    34         }
  • 相关阅读:
    实验四 主存空间的分配和回收模拟
    实验一
    实验3观后感
    实验三进程调度模拟程序
    实验2作业调度
    0909 学习操作系统
    实验四 主存空间的分配和回收模拟
    实验三 同学互评
    实验三 进程调度模拟程序
    实验二 作业调度模拟程序
  • 原文地址:https://www.cnblogs.com/yougmi/p/5523227.html
Copyright © 2011-2022 走看看