2012-02-27 11 views
0

私のWPFアプリケーションでは、アプリケーションをデータ保存する必要があるときにWindowsをシャットダウンしないようにSessionEndingイベントを使用しています。それは動作しますが、Windowsのシャットダウンをもうブロックする必要はありません。私は貯蓄が今起こっているかどうかを示すブール変数を持っています。 SessionEndingでシャットダウンをブロックすると、終了時にアプリを閉じる方法を教えてください。私は単にユーザーがシャットダウンをキャンセルしたかどうかわからないが、保存を終えるとアプリケーションを閉じる必要はない。助けてください。Windowsを教えてくださいWPFアプリケーションでシャットダウンをもうブロックする必要はありません

+2

データの保存期間はどのくらいですか?クイックであれば、応答として保存してから、シャットダウンを続けることができます。それ以外の場合は、シャットダウンをブロックすると、ユーザーは再度手動でシャットダウンする必要があります。 – dlev

答えて

1

Windowsをシャットダウンすると、アプリケーションが終了するのを待つだけです。アプリケーションがデータを保存したら、それを閉じてください。Windowsは、引き続きシャットダウンを検出する必要があります。

+0

保存した後にアプリを閉じると、ユーザーがシャットダウンをキャンセルした場合はどうなりますか?私は、私のアプリケーションを閉じないようにしたい。ユーザーが自分のアプリケーションを閉じるのを待っている間に、シャットダウンをキャンセルする方法を知らせるにはどうすればいいですか? – jozefkarton

+0

テストされていませんが、このプロパティを確認してください:Environment.HasShutdownStarted – NestorArturo

+0

@jozefkartonその状況を検出する純粋なWPFの方法はないと思います。 WndProcをオーバーライドし、WM_QUERYENDSESSIONとWM_ENDSESSIONを処理するのは難しいことかもしれません。私のアドバイスは、実際には、システムシャットダウンのためにあなたのアプリケーションがシャットダウンしている間に、ユーザーが「シャットダウンをキャンセル」したシナリオから回復する必要はないということです。ある時点でキャンセルを押したにもかかわらず、シャットダウン中にいくつかのアプリケーション(あなたのものを含む)が閉じられたときにユーザーが驚くことはないと思います。 –

関連する問題