zoukankan      html  css  js  c++  java
  • 多任务完成以后立即进行处理

    几个task任务同步运行,希望每个单独任务完成以后立即进行处理,而不需要等待其他任务的完成。可通过引入更高级的async方法来await任务,并对结果进行处理。

    class Program
        {
            static void Main(string[] args)
            {
                ProcessTaskAsync();
    
                Console.ReadLine();
            }
    
            /// <summary>
            /// 等待并输出
            /// </summary>
            /// <param name="second"></param>
            /// <returns></returns>
            static async Task<int> DelayAsync(int second)
            {
                await Task.Delay(TimeSpan.FromSeconds(second));
                return second;
            }
    
            static async Task ProcessTaskAsync()
            {
                //创建任务队列
                Task<int> task1 = DelayAsync(2);
                Task<int> task2 = DelayAsync(3);
                Task<int> task3 = DelayAsync(1);
    
                var tasks = new[] { task1, task2, task3 };
    
                var processTasks = tasks.Select(async t =>
                  {
                      var result = await t;
                      Console.WriteLine(result);
                  });
    
                //等待全部任务完成
                await Task.WhenAll(processTasks);
            }
        }

    运行结果

    github地址:https://github.com/xiaopotian1990/NETAsyncDemos.git里面的TaskOver项目

  • 相关阅读:
    golang gc
    set password to qcow2
    golang reflect struct
    Mac 自启动管理
    shell exec
    shell 管道 与 mkfifo
    shell 读取文件
    shell 函数
    shell read 命令
    ubuntu 快速安装和设置 mysql
  • 原文地址:https://www.cnblogs.com/xiaopotian/p/6879937.html
Copyright © 2011-2022 走看看