0

私はアイデアを使い果たし、それについての参照を見つけることができなかったので、ここに行きます...私のC#プロジェクトに関連しないセカンダリアプリケーションを常にバックグラウンドで実行する必要があります。したがって、このセカンダリ アプリケーションがクラッシュしたり、誰かが手動で閉じたりすると、C# アプリを介して自動的に再起動されます。

これを達成する方法の手がかりがありません。つまり、このアプリケーションが私の c# アプリの外部の何かによって閉じられるかどうかを確認するということです。

どんな助けでも大歓迎です。前もって感謝します。

4

5 に答える 5

2

以下のコードはC#であり、WinForm内にあります。

    private void Form1_Load(object sender, EventArgs e)
    {
        Process p = Process.GetProcessesByName("Notepad")[0];
        p.EnableRaisingEvents = true;
        p.Exited += new EventHandler(p_Exited);
    }

    void p_Exited(object sender, EventArgs e)
    {
        MessageBox.Show("Exit");
    }

名前メモ帳のあるプロセスを探し、その最初のインスタンスを取得します。EnableRaisingEventsをtrueに設定し、Exitedイベントにフックします。メモ帳を閉じると、アラートが表示されます。

このロジックに基づいて、アプリを構築できます。

于 2012-05-18T07:53:35.210 に答える
1

最も簡単な方法は、タイマーを実行し、ティックイベントで使用することです-

if (Process.GetProcessesByName("communicator").Count() == 0)
{
   Process.Start("communicator.exe");
}
于 2012-05-18T07:49:48.347 に答える
1

解決策として、常に実行中のアプリケーションを呼び出す Windows サービスを使用できます。
そのサービスでアプリからのエラー リターン コードをキャッチし、エラーに応じて再起動することができます。

于 2012-05-18T07:12:46.200 に答える
1

プロセスが実行されているか、vb.net のプロセス クラスを使用していないかをチェックし続けることができます。

For Each p As Process In Process.GetProcessesByName("communicator") ShowWindow(p.MainWindowHandle, SHOW_WINDOW.SW_NORMAL) 次の p

必要なプロセスがリストにない場合は、もう一度起動することができます。アシッシュ・クマール

于 2012-05-18T07:19:42.877 に答える
0

FileSystemWatcherを使用して、他のアプリケーションによって変更されたファイルを監視できます。

FileSystemWatcher には、ファイルの変更を追跡するためにサブスクライブできる、Changed、Created、Renamed、Deleted などのイベントがあります。

于 2012-05-18T07:05:16.857 に答える