2010-12-16 30 views
8

私はID 1234のプロセスがあると言います。このプロセスは、アプリケーションが実行される前に実行されています。 プロセスの終了に関する問題

 Process app = Process.GetProcessById(1234); 
     MessageBox.Show(app.MainWindowTitle); 
     app.Exited += this.methodShowsMessageBox; 

は今、私はコンパイルしてアプリを実行すると、それがプロセスを取得し、メインウィンドウのタイトルを示してい

私はこのコードを持っています。しかし、プロセス1234を終了すると、app.Exitedは起動しません。なぜこれがですか?そして私はそれをどのように発射するのだろうか?

答えて

17

​​は、このイベントが発生する前にEnableRaisingEventstrueに設定する必要があることに注意してください。

+0

yahooで保存しました。 – TheVillageIdiot

3

パフォーマンス上の理由から、Processクラスはデフォルトでイベントを発生させません。 ProcessオブジェクトでExitedを監視し、そのイベントを発生させる場合は、EnableRaisingEventsプロパティをtrueに設定する必要があります。

終了するプロセスを確認するには、 が必要です。 EnableRaisingEventsがtrueの場合、 関連プロセスが終了すると、 Exitedイベントが発生します。その時点で のExitedイベントに対して指定した手順は、 です。

場合によっては、アプリケーションが プロセスを開始しますが、終了の通知を にする必要はありません。たとえば、 アプリケーションでメモ帳を開始して にすると、ユーザーはテキスト の編集を実行できますが、メモ帳アプリケーションの はこれ以上使用できません。 の継続的な操作に関連する ではないため、 プロセスが終了するときに通知されないようにすることができます。 EnableRaisingEventsをfalseに設定すると、システムリソースが に保存されます。

関連する問題