2011-01-04 5 views
0

私はC#クラスMyCommandを持っています。これは、backgroundWorkerとスレッドプールを使って実行します。 MyCommandは、Processクラスを使用して実行可能なコマンドラインを実行します。 MyCommandのインスタンスは、それぞれ独自のスレッド内で、パラレルではなくシリアルに実行されます。 MyCommand内のProcess.Start()の実行が他のスレッドをブロックしているかどうかは不思議です。C#Multiple Simultaneous System.Diagnostics.Process

+0

これらの実行中のプロセスが致命的な例外をスローする可能性がありますか?もしそうでなければ、私はプロセスと一緒に行かないだろう。 MSDNのタスク並列ライブラリをチェックしてください。 – IAbstract

+1

コードに問題があります。しかし、あなたのコードを見ることなく何が間違っているのかを知ることはできません。 –

+0

このプロセスでは、ファイルを復号化する実行可能ファイルを実行するので、各スレッドは別のファイルを復号化します。解読プログラムは完了です。私はその出力を印刷しています。解読プログラムはC++ソースからコンパイルされます。しかし、他の反応に基づいて、それはプログラムそのものと関係しているようです。 私のフォームでは、DoWorkメソッドに実行されるボタンのクリックによってバックグラウンドワーカーを開始します。このメソッドでは、スレッドプールを使用して、次の記事に示す例を使用してスレッドを起動します。http://msdn.microsoft.com/en-us/library/3dasc8as%28v=vs.80%29.aspx – udeleng

答えて

1

No Process.Startはブロックしません。しかし、あなたが起動しているアプリケーションの可能性があります。たとえば、mutexを使用して、一度に1つのインスタンスしか実行されていないかどうかを確認します。

1

答えは簡単です:いいえ、プロセスを開始しても他のスレッドはブロックされません。