Parallel.ForEach,限制同时连接

时间:2014-01-24 08:58:19

标签: c# .net parallel.foreach

我有一组文件,我需要并行处理它们。处理包括将每个文件上载到FTP服务器作为最后一步。这个服务器上的同时连接数量是有限的,比方说是2.我使用Parallel.Foreach()这样:

Parallel.ForEach(files, options, ProcessFile);

我是否保证转到Parallel.ForEach

ParallelOptions options = new ParallelOptions { MaxDegreeOfParallelism = 2 };

我不会超过允许的连接数量?我已经阅读了很多关于Parallel.ForEach如何运作的内容,但我仍然不确定。我认为我是FTP服务器的唯一用户,并且在ProcessFile期间每个连接都正常关闭。

1 个答案:

答案 0 :(得分:2)

是的,这将确保您最多同时运行两个任务。假设没有其他进程或任务正在向该服务器进行任何上传,那么您应该没问题。

我建议在你的foreach循环中使用一个信号量,因为那时实际的处理可以同时完成两个以上的任务。如果处理是占用大部分时间的部分,则可以提高性能。