我需要在 C# 中创建一个代码,它将执行单个进程 1000 次(每次使用不同的命令行参数),并且我想将并行运行的进程数限制为 4 个。这样一来,所有休息将等到至少一个完成,然后下一个开始。我怎样才能做到这一点?
2 回答
翻翻过去那场雪
TA贡献2065条经验 获得超13个赞
您可以将 ThreadPool 中的最大线程数设置为 4:
ThreadPool.SetMaxThreads(4, 4);
然后就可以把ThreadPool中的1000个进程排队了:
for (int i = 0; i < 1000; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(LaunchProcess));
}
这是将在后台线程上运行并运行您的进程的方法。它使用 WaitForExit() 来确保进程在线程完成之前完成。
static void LaunchProcess(object o)
{
var p = new Process();
p.StartInfo = new ProcessStartInfo("myprocess.exe");
p.Start();
p.WaitForExit(); // Critical to wait here for the process to finish
}
我相信,这应该会将活动进程的数量限制为 4 个。没有测试过。
- 2 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消