3

標準の「本当に終了しますか?」のコードを追加しました。this.Closing メインウィンドウのイベント内のメッセージ。

GUIから閉じると期待どおりに機能しますが、アプリケーションをApplication.Shutdown().

ウィンドウが閉じられる前に発生するイベントはなくApplication、Shutdown メソッドをオーバーライドすることはできません。

ウィンドウを閉じる原因を特定するにはどうすればよいですか?

4

2 に答える 2

1

免責事項:これは汚いハック(きれいなものではない)であるため、できれば回答ではなくコメントにします。しかし、あなたが本当に何かを必要としていて、より良い解決策が見つからない場合は、うまくいけば役立つようにとにかく投稿します...

アプリケーションのシャットダウンを呼び出しているコードベースの部分を制御/フックする立場にない場合は、ウィンドウが閉じる前にトリップできるシャットダウンに応答する何かを見つけることができます。

私の(あまり理想的ではない)考えは、別の隠しウィンドウ(SO:WPFウィンドウを表示せずにロードする)をセットアップすることです。ユーザーは操作しませんが、アプリケーションはシャットダウン時に閉じます。

そのウィンドウの終了イベントで、アプリケーションがシャットダウン中であることを示すフラグを設定できます。次に、メイン ウィンドウのクロージング イベントで、そのフラグに反応できます。

取り組むべき大きな問題は、隠しウィンドウが常にメイン ウィンドウの前に安全に閉じるように構成することです。

アプリケーション Startupuri として MainWindow.Xaml を使用していくつかの限定的なテストを行い、application.onstartup イベントから隠しウィンドウを作成したところ、隠しウィンドウが最初に閉じられることがわかりましたが、すべてのシーンでそれを保証したくはありません! 実際にこれを機能させて適切にテストするには、かなりの作業が必要になる可能性があります。

于 2012-08-03T05:08:49.190 に答える
0

誰が電話しApplication.Shutdown()ますか?あなたがそれを担当している場合は、それを行ったことを示すフラグを設定し、Closingイベントハンドラーでそのフラグを確認してください。

于 2012-08-01T20:05:56.793 に答える