現在
外部プロセスが既に起動されている状態で
自ソフトから外部プロセスを確実に終了させたい考えていますが障害が多く
困っています。
###試したこと
・Process.CloseMainWindow()
終了メッセージを投げるだけで終了しない場合がある。
終了も検知できない。
・Process.kill()
確実に強制終了はしますが、終了したことが自プロセス側で検知できない。
・Process.WaitForExit()
このメソッドが一番希望に沿っていますが
親子関係にないため終了に失敗していまいます。
質問
Process.WaitForExit()で終了まで待機できればそれが一番いいのですが
親子関係にない(自分で起動していないのでハンドルを持っていない)
外部プロセスを終了し、終了したことを検知するにはどうすればよいでしょうか?
Process.GetProcessById で消えるまで待つのはどうですか?
または Exited イベントに登録するとか。
ソース見る限り、WaitForExitは親子関係なくても使えるはずだけど、、
何、まだ生きているのにTRUEが戻るの?
>>Zuishin様
ご回答ありがとうございます。
終了を検知する処理を自作すればよかったですね。
ただ、matukesoさんの回答によってProcess.WaitForExit()の
使用方法に誤りがあったことがわかったのでProcess.WaitForExit()で解決したいと思います。
>>matukeso
WaitForExit()の使用方法が誤ってました。
WaitForExit()の呼び出しで終了処理→終了まで待機
だと勘違いしていたのですが、実際の処理は
終了待機のみでその前に終了処理を投げる必要がありました。
タイムアウトでfalseが戻されていたので終了に失敗したと
思い込んでしまいました。
勘違いで恥ずかしいのですが自己解決としてこの質問を閉じたいと思います。
回答1件
あなたの回答
tips
プレビュー