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
并发实例
尝试使用Parallel.ForEach。你可以使用ParallelOptions。MaxDegreeOfParallelism属性设置perFile
运行的最大计数
可以使用Parallel。如果你使用。net 4.5及以上版本,你可以通过提供ParallelOptions
和MaxDegreeOfParalleism
设置为你喜欢的数字来控制要使用的线程数。
示例代码:
ParallelOptions POptions = new ParallelOptions();
POptions.MaxDegreeOfParalleism = ReplaceThisWithSomeNumber;
Parallel.For(0,files.Length,POptions,(x) => {perFile(files[x]);});
请注意,您的程序将是IO绑定的(有关如何解决该问题的更多信息,请参阅异步IO)