• C# Task.WhenAll


    .C# Task.WhenAll

    有时候我们需要同时执行一些操作,然后把这些操作的结果进行汇总,以达到用异步处理降低操作耗时的效果,此时我们会考虑使用Task,而Task.WhenAll则排上了用场。

     async void TestTaskWhenAll()
            {
                var total =10;
                Task<string>[] tasks = new Task<string>[total];
                for (int i = 0; i < total; i++)
                {
                    tasks[i] =  Convert("test "+ i );
                }
                await Task.WhenAll(tasks);
                foreach (var task in tasks)
                {
                    Debug.WriteLine("task.Id =" + task.Id + "  task.Status=" + task.Status + " result:"+ task.Result);
    
                }
    
    
                return;
            }
    
     Random rnd = new Random();
            async Task Convert(string str)
            {
    
                await  Task.Delay(rnd.Next(1000,6000));
                Debug.Print(str+" OK");
                return "task " + str;
             }
    

      

     结果:

    test 5 OK
    test 7 OK
    test 9 OK
    test 4 OK
    test 2 OK
    test 8 OK
    test 1 OK
    test 6 OK
    test 10 OK
    test 0 OK
    test 3 OK
    task.Id =4894  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462530097716
    task.Id =4896  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462515158794
    task.Id =4898  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462508434632
    task.Id =4900  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462530342270
    task.Id =4902  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462508404465
    task.Id =4904  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462503610679
    task.Id =4906  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462518147200
    task.Id =4908  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462504196737
    task.Id =4910  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462510625275
    task.Id =4912  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462505016507
    task.Id =4914  task.Status=RanToCompletion result:task C:\Users\Administrator\source\repos\MSTextSpeech\MSTextSpeech\bin\x86\Debug\net48\temp-637835462526342482
    

      

  • 相关阅读:
    焦点事件中的Validating处理方法
    推荐一个快速反射调用的类
    VB.NET自我总结语法
    WinForm应用程序实现虚拟键盘
    将图片保存到XML文件的方法
    分享TextBoxLineEx控件
    自定义CancelEventArgs类,封装事件参数信息,实现e.Cancle=true取消机制。
    从sql server 中读取二进制图片
    Oracle数据库自我总结
    Android DroidDraw UI设计工具下载地址
  • 原文地址:https://www.cnblogs.com/wgscd/p/16038574.html
Copyright © 2020-2023  润新知