課題: System.Diagnostics.Process
を使用して子プロセスを生成するアプリケーションは、よくある問題に直面します。それは、親プロセスが (タスク マネージャーなどを介して) 突然終了すると、子プロセスが実行されたままになることがよくあります。 これには、親アプリケーションが終了したときに、依存する子プロセスが確実に終了するメカニズムが必要です。
解決策: Windows ジョブ オブジェクトを利用することで、洗練されたソリューションが提供されます。ジョブ オブジェクトはプロセス コンテナとして機能します。 (ジョブ オブジェクトに関連付けられた) 親プロセスが終了すると、OS は同じジョブ オブジェクト内のすべての子プロセスを自動的に終了します。
実装手順:
LimitFlags
プロパティを 0x2000
(JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE
を表す) に設定します。この重要な手順により、ジョブ オブジェクトが閉じられたときに子プロセスが確実に終了されます。AddProcess
メソッドを使用して、新しく作成された子プロセスをジョブ オブジェクトに関連付けます。このアプローチにより、親プロセスが予期せず終了するシナリオでも、子プロセスが確実に終了されることが保証されます。
以上がC# で親プロセスが終了したときに子プロセスが確実に終了するようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。