2012-06-19 28 views
5

可能性の重複:
How to know if Process.Start() is successful?C#の - どのようにプロセスが正常に起動したかどうかを確認するために

私は、ウォッチドッグと同様のプロセスを持って

私のプログラムで(のはWDそれを呼びましょう)が別の実行プロセスです(Aと呼ぶ)。私は特定のイベントでWDプロセスを開始しています。キーが押されたとしましょう。このプロセスで別のプロセスを開始したい場合は、Bとしましょう。

問題は、私が最初のプロセスAをシャットダウンしたいということです。プロセスBが正常に開始されたことを知った後です。それをどうやって確認できますか?

私はプロセスWDBProcess.Start(argList)ProcessInfo(argList)という構文で開始しています。

各プロセスは、単純なC#コンソールアプリケーションです。

+0

あなたは試してみる{}キャッチ{}を使用してしようと試みてきましたか? –

+0

try catchセクションは例外を開くのに役立ちます。私はすでにこれをやっていますが、そのプロセスを開くための待ち時間に関する情報は私には与えません。 – Simon

答えて

4

(プロセスが正常に開始した場合)Process.Startはブール値を返します はProcess.Start()メソッドは、このMSDN linkをチェックしてください。

あなたのコードのようなものでなければなりません:

 Process B= new Process(); 

     try 
     { 
      B.StartInfo.UseShellExecute = false; 
      B.StartInfo.FileName = "C:\\B.exe"; 
      B.StartInfo.CreateNoWindow = true; 
      if (B.Start()) 
      { 
       // Kill process A 
      } 
      else 
      { 
       // Handle incorrect start of process B and do NOT stop A 
      } 

     } 
     catch (Exception e) 
     { 
      // Handle exception and do NOT stop A 
     } 
0

Process.Start

戻り値:プロセス・リソースが開始された場合は新しいプロセスリソースが開始されていない場合(既存のプロセスが再利用された場合など)

戻り値がProcess.Startであることを確認してください。そのtrueの場合は、現在のプロセスを閉じることができます。

使用するオーバーロードによっては、失敗した場合は戻り値がnullになることがあります。

関連する問題