C#多线程在任何其他线程完成后添加一个线程

本文关键字:线程 添加 一个 多线程 任何 其他 | 更新日期: 2024-08-10 00:54:54

我正在使用winforms开发一个文档转换器。

我想使用多线程并行转换3个文档,其中任何一个文档转换完成,然后其他文档转换必须作为新线程启动。

我正在尝试使用多线程,但我找不到如何将线程放入队列。

有没有任何方法可以在c#中实现这一点。

C#多线程在任何其他线程完成后添加一个线程

我会使用Task s。在MSDN任务并行性中可以找到很多信息。

在最简单的形式中,您可以创建Task对象并启动它们,之后您可以使用Task.WhenAny()检查它们中是否有任何一个已经完成并启动更多。最后,您可以使用Task.WhenAll()查看所有任务何时完成。

您也可以只创建所有任务并让系统处理并发性,除非您特别需要三个任务同时运行。

据我所知,您正在寻找一种在有限并发的情况下并行处理多个文档的方法。您可以将Parallel类用于此目的。

ParallelOptions options=new ParallelOptions { MaxDegreeOfParallelism=3 };
Parallel.ForEach(documentCollection,options,document => ConvertDocument(document));