首页 > 编程语言 >C#异步方法中Task.WhenAll的使用

C#异步方法中Task.WhenAll的使用

时间:2023-01-26 22:55:26浏览次数:47  
标签:Task string C# System using WhenAll countTasks

一、说明

Task.WhenAll()、Task.WhenAny()这两个与Task.WaitALL()、Task.WaitAny()是有区别的,When是异步的,Wait是同步的。
Task.WhenAll():所有task完成时,task才完成,用于等待多个任务执行结束。
Task.WhenAny():任何一个task完成时,task完成。

二、示例:

 

 1 using System;
 2 using System.IO;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 
 6 namespace 取消
 7 {
 8     class Program
 9     {
10         static  void Main(string[] args)
11         {
12 
13             FileCharsCount();
14         }
15 
16         /// <summary>
17         /// 统计所有文件的字符数
18         /// </summary>
19         static async void FileCharsCount()
20         {
21             string[] files = Directory.GetFiles(@"D:\test\temp");
22             Task<int>[] countTasks = new Task<int>[files.Length];
23 
24             for (int i = 0; i < countTasks.Length; i++)
25             {
26                 string filename = files[i];
27                 Task<int> t = ReadCharsCount(filename);
28                 countTasks[i] = t;
29             }
30 
31             int[] counts = await Task.WhenAll(countTasks);  //取到所有结果返回
32             int c = counts.Sum();   //统计所有文件的字符数
33 
34             Console.WriteLine(c);
35             Console.ReadKey();
36         }
37 
38         static async Task<int> ReadCharsCount(string filename)
39         {
40             string s = await File.ReadAllTextAsync(filename);
41             return s.Length;
42         }
43     }
44 }

 

标签:Task,string,C#,System,using,WhenAll,countTasks
From: https://www.cnblogs.com/handsomeziff/p/17068368.html

相关文章

  • docker中使用nginx
    1.拉取镜像拉取测试浏览器测试参考#安装https://www.cnblogs.com/zhaokejin/p/15605261.html2.修改配置我们再开启一个终端,进入到nginx容器中但我们发现vim、......
  • C++类型擦除
    以线程池举例线程池需要接收要执行的任务,这些任务需要形成一个队列任务可以是函数,lambda,重载括号运算符的类那么在定义一个数组去保存这些任务该如何定义?classmy_thre......
  • C语言--简单的爱心代码
    新手都能敲出来的爱心代码#include<stdio.h>#include<stdlib.h>//#include<string.h>intmain(){floatx,y,a;for(y=1.5;y>-1.5;y-=0.1){for(x=-1......
  • 竞赛图初探 || CF1779E Anya's Simultaneous Exhibition - 竞赛图 - 交互 -
    题目链接:https://codeforces.com/contest/1779/problem/E题解:将一个完全图的每条边定向,构成的有向图叫做竞赛图也很好理解,\(n\)个人两两比赛,肯定有胜有负,赢家向负者连......
  • C++Day12 虚拟继承内存布局测试
    测试一、虚继承与继承的区别1.1单个继承,不带虚函数1>classBsize(8):1>+---1>0|+---(baseclassA)1>0||_ia//4B1......
  • Codeforces 44E Anfisa the Monkey
    https://codeforces.com/contest/44/problem/E高级又好像很低级的诈骗首先不难得到\(a\timesk>|s|\texttt{or}b\timesk<|s|\)无解。对于每一组考虑先填上\(a\)......
  • 快速幂c++
    是求(a^b)modp如果用暴力解法O(b)点击查看TLE代码c++#include<iostream>usingnamespacestd;intmain(){inta,b,p;longlongres=1;cin>>a>>b>......
  • ASP.NET Core+Element+SQL Server开发校园图书管理系统(二)
    随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP.NETCore也应运而生。本文主要基于ASP.NETCore+Element+SqlServer开发一个校园图书管理系统为例,简述基于MVC三......
  • SpringCloud Alibaba
    前言SpringCloudAlibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开......
  • Microsoft Edge浏览器Tampermonkey(油猴)插件的安装与使用
    打开MicrosoftEdge浏览器,点开此链接,安装油猴Tampermonkey下载安装好之后选择在工具栏中显示效果就是这样点击获取新脚本搜索学习通找到这个,并点击安装会......