我正在使用winforms开发文档转换器。
我想使用多线程并行转换3个文档,并且任何一个文档转换完成,然后其他文档转换必须以新线程开始。
我正在尝试使用多线程,但我无法找到如何将线程放入队列。
有没有办法在c#中实现这个。
答案 0 :(得分:3)
我会使用Task
来做到这一点。可以在MSDN Task Parallelism中找到大量信息。
以最简单的形式创建Task对象并启动它们,之后您可以使用Task.WhenAny()
检查其中是否有任何已完成并启动更多。最后,您可以使用Task.WhenAll()
查看所有任务的完成时间。
您也可以创建所有任务并让系统处理并发,除非您特别需要三个并发运行。
答案 1 :(得分:2)
据我了解,您正在寻找一种以有限的并发性并行处理多个文档的方法。您可以使用Parallel类来实现此目的。
ParallelOptions options=new ParallelOptions { MaxDegreeOfParallelism=3 };
Parallel.ForEach(documentCollection,options,document => ConvertDocument(document));