• 异步方法的简洁示例


    .net framework 4.5中新增加的async await关键字,即异步方法功能,使异步操作的编写特别方便、高效和容易理解。下面给出一个简洁示例:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading;
     6 using System.Threading.Tasks;
     7 
     8 namespace AsyncTest
     9 {
    10     class Program
    11     {
    12         static int Count = 0;
    13         static void Main(string[] args)
    14         { 
    15             Test();
    16         }
    17 
    18         public static async Task Test()
    19         {
    20             List<Task<int>> list = new List<Task<int>>();
    21             for (int i = 0; i < 10; i++)
    22             {
    23                 list.Add(Get(i + ":"));
    24             }
    25             list.Add(Get("dis:"));
    26             Console.WriteLine("最后打印的内容,却出现在最前面。");
    27             Task.WaitAll(list.ToArray());
    28             Console.ReadLine();
    29         }
    30 
    31         public static async Task<int> Get(string s)
    32         {
    33             await Task.Delay(100); //await 让该任务等待。Thread.Sleep让整个线程等待.
    34             Console.WriteLine(s + DateTime.Now.ToString("HH:mm:ss fff"));
    35             return Count;
    36         } 
    37     }
    38 }

    总结一下:

    1)要异步执行的方法,用 async关键字, 调用的方法也需要该关键字。
    2)异步方法返回Task<T> , 调用时便开始执行了,但如果不使用await,调用处便会接着向下执行,不等待返回。调用时保存Task<T>类型的返回值(taskResult),以便后面确认方法是否已返回。
    3)await taskResult; 等待(确认)方法返回。
    4)示例中给出的是多个异步方法保证最后都执行完成的方式,已验证可以正确运行。

  • 相关阅读:
    使用 CocoStudio UI 编辑器实现《乱斗堂》设置界面
    windows下patch
    继承复习
    游戏中地图的制作(二)
    STL容器之List:rbegin
    RDTSC
    Create QR Code
    Spy++ 简介
    COM component(COM组件)
    git
  • 原文地址:https://www.cnblogs.com/ybst/p/2746642.html
Copyright © 2020-2023  润新知