2 つの .net アプリケーションがあるとします。System.Diagnostics.Process
アプリケーション「A」は、クラスを使用してアプリケーション「B」を起動します。次に、「A」は方法で「B」を殺したいと考えていProcess.Kill
ます。「B」は、誰かが自分を殺しているとどのように判断できますか?
質問する
169 次
2 に答える
0
アプリケーションが殺されたことに応答することは不可能だと思います...タスクマネージャーを使用するときのように、OSレベルで動作すると思います。
Process.Kill() を使用することは、このコンテキストでは正しくない可能性があります。解決しようとしている問題に関する詳細情報を提供できますか?
于 2010-02-18T14:15:46.640 に答える
0
おそらく、プロセス B のコード内でこの方法を試すことができます...
// プロセス B にいます.... System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess(); proc.EnableRaisingEvents = true; proc.Exited += new EventHandler(proc_Exited); static void proc_Exited(オブジェクト送信者, EventArgs e) { // 殺されたことをここで処理します... }
これが機能すると自信を持って言うことはできません...プロセスに「キル」を送信するOSの性質は実装に依存するため、プロセスBが実行されていることを知っている確実な方法はありません。殺された。プロセス B が管理対象/非管理対象プロセスであるかどうかを明示的に述べていないので、タグが「.net」であるため、実際に管理されているという仮定の基礎を作ります。WinForm アプリケーションの場合、おそらくClosing
winForms 内のイベントはそのイベント ハンドラーの引数に理由があるか、以下に示すように ApplicationDomain インスタンスを使用します。
AppDomain thisDom = AppDomain.CurrentDomain; thisDom.ProcessExit += new EventHandler(thisDom_ProcessExit); /// static void thisDom_ProcessExit(オブジェクト送信者, EventArgs e) { // AppDomain がアンロードされて強制終了される状況をここで処理します。 }
これがお役に立てば幸いです。よろしくお願いします、トム。
于 2010-02-18T14:30:16.917 に答える