- 1. 概要
- 2. 死活監視
1. 概要
表題だけでは、わかりにくいですね。
やりたいことは、起動したプロセスが、もしこけたら、そのイベントを補足して、何かしたいのです。
「VC++」で作成したシステムで、「WaitForMultipleObjects」ちゅうのを使って、それを実現していたのですが、「C#」でも、それに似たようなことができるらしい。
本ページは、下記のサイトを参考にさせていただきました。
「[ VB.NET / C# ] プロセスの終了を非同期に捕捉する ( Process.Exited )」
2. 死活監視
いささか、はしょって書きます。
public void Start()
{
ProcessStartInfo app = new ProcessStartInfo{ FileName = 'ロードモジュールのフルパス' };
System.Diagnostics.Process proc = System.Diagnostics.Process.Start(app);
if (proc == null)
{
エラー処理
return;
}
proc.EnableRaisingEvents = true;
proc.Exited += new EventHandler(Process_Exited);
・・・
}
private void Process_Exited(object sender, System.EventArgs ev)
{
System.Diagnostics.Process proc = (System.Diagnostics.Process)sender;
出力メソッド("プロセス終了を検出しました["+ proc.StartInfo.FileName +"]");
}
基本的には、こんな感じですな。
特に、「Wait」やタイマのしかけがなくても、起動したプロセスが、こけたら、「Process_Exited」メソッドに飛び込んできます。
|
|