Process.CloseMainWindow
ではなく呼び出すことで、必要に近い動作を実現できますProcess.Kill
。
の動作はCloseMainWindow
、ユーザーがシステム メニューを使用してアプリケーションのメイン ウィンドウを閉じる場合と同じです。したがって、メイン ウィンドウを閉じてプロセスを終了する要求によって、アプリケーションがすぐに終了することはありません。
を呼び出すと、プロセスによって編集されたデータまたはプロセスに割り当てられたリソースが失われる可能性がありますKill
。Kill
プロセスの異常終了を引き起こすため、必要な場合にのみ使用してください。CloseMainWindow
プロセスを正常に終了し、すべてのウィンドウを閉じることができるため、インターフェイスを備えたアプリケーションに適しています。
変更が保存されていない Office アプリケーションの場合、CloseMainWindow
[保存] ダイアログが表示されます。ユーザーが「キャンセル」を押すシナリオを処理する必要があります。これは、WaitForExit
通話が無期限にブロックされる可能性があるためです。
例えば:
// Launch Word application.
Process wordProcess =
Process.Start(@"C:\Program Files (x86)\Microsoft Office\Office12\winword.exe");
// Give user some time to type in text.
Thread.Sleep(TimeSpan.FromSeconds(20));
// Request Word to close.
wordProcess.CloseMainWindow();
// Wait until user saves or discards changes.
// May block indefinitely if user cancels.
wordProcess.WaitForExit();