我使用 aThreadPool
来并行执行多个进程,就像这里显示
的那样,不同之处在于我使用一些参数启动了我自己的进程/程序。简而言之,这个程序会计算一些值并将它们写入一个文本文件,然后我会进行比较。
public void StartProcess()
{
string par = @"-p ""foo"" -c 17";
Process p = Process.Start(@"C:\MyProgramm.exe", par);
p.EnableRaisingEvents = true;
p.Exited += new EventHandler(p_Exited);
}
void p_Exited(object sender, EventArgs e)
{
// Indicates that the process has been completed
this.doneEvent.Set();
Console.WriteLine("thread {0} end...", ThreadIndex);
}
对于少量线程,它可以正常工作。就我而言,我必须启动大约 200 个线程,但在WaitHandle.WaitAll
方法中我得到了一个NotSuppotedException
waitHandles 中的对象数量大于系统允许的数量。
我现在的问题是:类是否有可能ThreadPool
管理大量线程?类似于队列的东西,当其他进程完成时启动新进程。简单地说,在我的情况下,进程 = 线程。