c#的运行方法可以同时运行多个时间

本文关键字:运行 时间 方法 | 更新日期: 2023-09-27 18:18:03

我有以下c#代码:

string[] files = Directory.GetFiles(@"C:'Users'Documents'DailyData", "*.txt", SearchOption.AllDirectories);
        for (int ii = 0; ii < files.Length; ii++)
        {
            perFile(files[ii]);
        }

其中per file打开每个文件并创建一系列泛型列表,然后将结果写入文件。

每次迭代大约需要15分钟。

我希望perFile方法并发执行,例如,在开始下一个迭代之前不要等待当前迭代完成。

我的问题是:

我该怎么做呢?

如何控制perFile并发运行的实例数量

如何确定我的计算机一次可以处理多少个perFile并发实例

c#的运行方法可以同时运行多个时间

尝试使用Parallel.ForEach。你可以使用ParallelOptions。MaxDegreeOfParallelism属性设置perFile运行的最大计数

可以使用Parallel。如果你使用。net 4.5及以上版本,你可以通过提供ParallelOptionsMaxDegreeOfParalleism设置为你喜欢的数字来控制要使用的线程数。

示例代码:

ParallelOptions POptions = new ParallelOptions();
POptions.MaxDegreeOfParalleism = ReplaceThisWithSomeNumber;
Parallel.For(0,files.Length,POptions,(x) => {perFile(files[x]);});

请注意,您的程序将是IO绑定的(有关如何解决该问题的更多信息,请参阅异步IO)