2011-08-21 1 views
8

私は、閉じるときにデータを保存する必要があるC#WPFアプリケーションを持っています。ユーザーがプログラムを閉じた場合、ウィンドウ終了/終了イベントは正常に機能しますが、ユーザーがコンピュータをログオフ/シャットダウンした場合は呼び出されません。wpfアプリケーションでWindowsのシャットダウンイベントを受け取ります

私はwinformsプログラム(hereおよびhere)でこのイベントをキャッチする方法を発見しました。 WPFアプリケーションでこれを達成する方法を理解することはできません。

私は私のプログラムを終了する準備ができるまでシャットダウンを停止しようとしている

答えて

14

あり、組み込みのイベントApplication.SessionEnding - ユーザーがログオフするか、コンピュータをシャットダウンし、このイベントが発生する...あなただけを完全にシャットダウンからコンピュータを停止します

+0

、私は私のプログラムを終了する準備ができるまでシャットダウンを停止しようとしている...それを購読し、そこに日付などを保存するためにあなたのコードを配置する必要があります。申し訳ありませんが、OPで指定しておきます。 – zaza

+0

私は実際には理解していません...このイベント自体は何もしません...あなたのコードが応答するのに時間がかかる場合、Windowsはユーザーにあなたにアプリケーションを強制終了したいかどうかを尋ねます。このイベントを処理するときは速くなければなりません。Windowsにシャットダウンしないようにすることができます(イベントハンドラで 'e.Cancel = true; 'を設定してください)... – Yahia

+0

ops sry、私の側では誤解されていました。私は自分のアプリケーションでイベントを呼び出す前にSessionEndingCancelEventArgsイベントをキャンセルしなければならないと思った。あなたのソリューションは完璧に動作します。 – zaza

関連する問題