C# 运行 方法多次并发

C# run method multiple time concurrently

我有以下 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. You can use ParallelOptions.MaxDegreeOfParallelism 属性 设置 运行 perFile 的最大计数。

如果您使用的是 .Net 4.5 及更高版本,您可以使用 Parallel.For 来执行您需要的操作,您可以通过提供 ParallelOptions 和 [=12= 来控制要使用的线程数] 设置成你喜欢的数字。

示例代码:

ParallelOptions POptions = new ParallelOptions();
POptions.MaxDegreeOfParalleism = ReplaceThisWithSomeNumber;

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

请注意,您的程序将受 IO 限制(阅读 Asynchronous IO 以获取有关如何解决该问题的更多信息)