ここThreadPool
に示すように、いくつかのパラメーターを使用
して独自のプロセス/プログラムを開始するという違いがあります。簡単に言うと、このプログラムはいくつかの値を計算し、それらをテキスト ファイルに書き込みます。後で比較します。
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
私の質問は次のとおりです。多数のスレッドを管理するクラスの可能性はありますか? キューのようなもので、他のプロセスが完了したときに新しいプロセスを開始します。簡単に言えば、私の場合はプロセス=スレッドです。