3

WPFアプリケーションがあります。

アプリケーションを閉じたときにログに記録したい。

しかし、私はアプリケーションを変更できません(ビジネスのためだけにいくつかの制限があります)。

したがって、既存のアプリケーション内に非表示のフォームコンポーネントを作成し、dllライブラリとして追加するので、既存のアプリケーションを変更する必要はありません。

しかし、問題は、見えないコンポーネントがアプリケーションがシャットダウンしていることをどのようにして知ることができるかということです。

使用できる関数またはイベントハンドラーはありますか?

解決:

それができるイベントがいくつかあります、

アンロードクロージングクローズ

これらの3つのイベントはすべて、メインウィンドウが閉じられるときに発生します。

問題が解決しました

4

3 に答える 3

4

このクラスには、これをオーバーライドできるSystem.Windows.Window仮想メソッドと、処理できるイベントがあります。OnClosing(CancelEventArgs)Closing

私は通常、これらのイベントをキャプチャし、その情報をPageクラスに渡します。クラスには、残念ながら、そのようなメソッドやイベントは含まれていません。

各ウィンドウは閉じられたときにこれらのメソッドを起動するため、親ウィンドウと子ウィンドウの間にメッセージを接続する必要はありません。そして、私は、タスクマネージャーが最初にアプリケーションの通常のシャットダウンを試みます。これにより、ダイアログボックスなどの他の何かがそれを妨げない限り、クローズイベントが発生します。その後、TMはアプリケーションに対して異常終了を実行するかどうかを尋ねます。これにより、明らかに、Closingイベントが回避されます。

于 2010-01-21T23:23:22.607 に答える
0

FormClosingイベントをチェックしましたか?

于 2010-01-21T23:16:37.247 に答える
0

私はまだWPFの知識を持っていませんが、winformsからは知っています。クラスClosingからイベントがFormあり、ダイアログをトラップして表示できます。「このアプリケーションは終了しています。続行しますか?」とCancelフラグを設定します。フォームを閉じるのを中止するためにtrueにするには、クラスApplicationExitからのイベントもありApplicationます。アプリケーションのシャットダウンを処理する場合は、それをトラップできます。

これがお役に立てば幸いです、よろしく、トム。

于 2010-01-21T23:17:04.203 に答える