web-dev-qa-db-ja.com

WPF終了イベントを処理する

終了がキャンセルされるようにWPFアプリケーションの終了イベントを処理する方法があるかどうか疑問に思いました。ユースケースは、サーバーがWPFアプリであるクライアントサーバーの状況にあることです。 WPFアプリがシャットダウン時にクライアントに通知するようにしたいのですが、シャットダウンプロセスをキャンセルします。クライアントはシャットダウン通知を受信し、独自に必要なクリーンアップを実行してから、要求を介してWPFアプリにシャットダウンを要求する必要があります。

これは可能ですか?

15
sohum

このようにメインウィンドウでイベントClosingをフックできます-

<Window Closing="Window_Closing">

また、イベントでe.Cancelをtrueに設定して、ウィンドウが閉じないようにします。あなたの場合、クライアントからcleanUpが完了し、ウィンドウを閉じるのに安全であるという通知を受け取ると設定されるフィールドを維持できます。その値をe.Cancelに設定するだけです

private void Window_Closing(object sender, CancelEventArgs e)
{
   e.Cancel = true;
}
33
Rohit Vats

オペレーティングシステムのシャットダウンを停止する場合、または少なくともシャットダウンする前にクリーンアップする場合は、 Application.SessionEnding を処理する必要があります。

関連: WPFでのシステムシャットダウンの処理

0
CAD bloke