2

プロセスを監視し、終了した場合は再起動するコンソールアプリを作成しようとしています。そのため、コンソール アプリは常にオンになっており、他のプロセスを再起動するだけです。

以下にコードを投稿しました..基本的には機能しますが、プロセスを1回再起動するだけです...

助けていただければ幸いです!!

前もって感謝します!

    {
        System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(SOME_PROCESS);
        p[0].Exited += new EventHandler(Startup_Exited);

        while (!p[0].HasExited)
        {
            p[0].WaitForExit();
        }

        //Application.Run();
    }

    private static void Startup_Exited(object sender, EventArgs e)
    {
        System.Diagnostics.Process.Start(AGAIN_THAT_SAME_PROCESS);  
    }
4

2 に答える 2

2

ループが必要で、プログラムを再起動した後、ループの先頭でp新しいプロセスに再接続する必要があります。次のようなものです:

Process p = /* get the current instance of the program */;
while (true)
{
  p.WaitForExit();
  p = Process.Start(/* the program */);
}

Process.Start は新しいインスタンスの Process オブジェクトを返すため、実際に検索を再実行する必要はありません。新しい Process オブジェクトを直接待つことができます。

于 2010-03-18T00:06:00.513 に答える
0

プロセスを再開したら、p[0] が指しているプロセスを更新し、イベント ハンドラを再アタッチする必要があります。イベントが終了すると、イベントが発生し、プロセスにイベントハンドラーが再度登録されることはないようです。

于 2010-03-18T00:03:25.097 に答える