首页 > 编程语言 >C#等待多线程任务都执行结束

C#等待多线程任务都执行结束

时间:2024-06-15 12:21:26浏览次数:14  
标签:执行 Task C# DoWork 任务 多线程 等待

有时为了快速处理多个任务,同时启用多个线程执行,需要等待都执行结束后再执行后面的方法,实现方法如下:

点击查看代码

using System;
using System.Threading.Tasks;
 
class Program
{
    static async Task Main(string[] args)
    {
        var task1 = Task.Run(() => DoWork("Task 1"));
        var task2 = Task.Run(() => DoWork("Task 2"));
 
        // 等待所有任务完成
        await Task.WhenAll(task1, task2);
 
        Console.WriteLine("所有任务已完成.");
    }
 
    static void DoWork(string name)
    {
        // 模拟长时间运行的任务
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine($"{name} 正在执行...");
            Task.Delay(200).Wait(); // 模拟工作
        }
    }
}

标签:执行,Task,C#,DoWork,任务,多线程,等待
From: https://www.cnblogs.com/qdxt/p/18249162

相关文章

  • 企业生产环境Nacos集群部署示例
    Nacos运行环境需要jdk环境,集群各节点服务器需安装jdk1.8:jdk-8u341-linux-x64.tar第一步:上次安装包第二步:解压sudotar-zxvfjdk-8u341-linux-x64.tar.gz第三步:配置环境变量sudovim/etc/profile第四步:添加以下内容exportJAVA_HOME=/usr/local/jdk1.8.0_341exportJRE......
  • 【SPARK-CORE】checkpoint机制
    本文主要介绍SPARKRDD的checkpoinnt机制 checkpoint机制介绍checkpoint是讲RDD保存到可靠的存储中的机制,主要目的是提高应用的容错能力和持久性。Checkpointing将数据从内存中转移到磁盘存储,使得在出现节点故障时,Spark可以从存储中恢复数据,而不需要重新计算所有的数据。这......
  • [BUUCTF_Misc]乌镇峰会种图,但十六进制对应文本乱码
    题目地址:BUUCTF乌镇峰会种图使用工具:edge浏览器、HxDHexEditor主要问题:edgeimageviewer保存图片后用十六进制编辑器打开,对应文本中含有大量乱码问题状态:题已做完,但不懂为什么点击附件后默认在edge浏览器的edgeimageviewer中查看图片,鼠标右键另存为图像。单看图片感觉......
  • ChatGPT三法助我搞科研
    世界顶级期刊《Nature》2024年4月8号发了一文:ThreewaysChatGPThelpsmeinmyacademic中文意思是:ChatGPT三法助我搞科研。作者DritjonGruda是《PersonalityandIndividualDifferences》和《PsychologyofLeadersandLeadership》学术杂志的编辑。这篇文章主要讨论了利......
  • Apache配置多个项目公用80端口
    打开Apache的配置文件httpd.conf,通常位于/etc/httpd/conf/httpd.conf或/etc/apache2/httpd.conf。 确保NameVirtualHost*:80指令被解注释(移除#),以启用基于域名的虚拟主机。 为每个网站添加<VirtualHost>配置块:<VirtualHost*:80>ServerAdminwebmaster@e......
  • JavaScript实现发布与订阅
    1、代码classEventBus{constructor(){this.events={};}on(event,handler){if(!this.events[event]){this.events[event]=[];}this.events[event].push(handler);}emit(event,data){if(this.events[event]){this.eve......
  • 『手撕Vue-CLI』自动安装依赖
    开篇经过『手撕Vue-CLI』拷贝模板,实现了自动下载并复制指定模板到目标目录。然而,虽然项目已复制,但其依赖并未自动安装,可能需要用户手动操作,这并不够智能。正如前文所述,我们已经了解了业务需求和背景。那么,接下来我们将直接深入探讨核心实现细节。自动安装依赖在前文中,我们已......
  • 自动化生成C/C++单元测试覆盖率报告!
    覆盖率生成脚本化处理在《生成单元覆盖率》一文中,我们已经可以成功的生成代码覆盖率报告,但是,不知道各位读者有没发现,整个过程是有一定繁杂的,多个命令搭配诸多不同的参数,对于初初接触的人来说,敲一下看一眼,生怕敲错、或者cv大法来来回回好几趟,生成个报告,没个三几分钟都不行;对......
  • C/C++生成单元测试覆盖率
    生成单元测试覆盖率前文提到添加了编译参数-fprofile-arcs、-ftest-coverage已经生成了gcno文件,单元测试运行后也产生了gcda文件。并且我们已经安装好lcov,那么该如何使用lcov来生成覆盖率报告呢?进入到我们生成了*.gcno*.gcda文件的目录收集覆盖率数据(*.gcda)并......
  • ASP.NET Core之使用OpenTelemetry的日志管理
    一、前言当前软件架构演变由单体架构=>分布式架构(SOA)=>微服务架构(mircoservice)=>云原生架构(cloudnative),所以架构的演变导致对系统日志、监控、链路等统称为观测性方案提出巨大的挑战。在单体架构时代,借助丰富的日志库基本满足对日志管理,但是面对分布式、微服务的架构盛行,......