アプリケーションを適切にシャットダウンしようとしています。私のアプリケーションはデータバインディングを使用し、データベースに数回アクセスし、おそらくいくつかの固有の脅威も実行されています。
Application.Current.Shutdown()この場合、すべてを閉じるわけではないので、 を見ましたApplication.Current.Dispatcher.BeginInvokeShutdown()。
BeginInvokeShutdown()System.Windows.Threading.DispatcherPriority引数が必要です。これは次のようになります。
Invalid- 列挙値は -1 です。これは無効な優先度です。Inactive- 列挙値は 0 です。操作は処理されません。SystemIdle- 列挙値は 1 です。操作は、システムがアイドル状態のときに処理されます。ApplicationIdle- 列挙値は 2 です。操作は、アプリケーションがアイドル状態のときに処理されます。ContextIdle- 列挙値は 3 です。操作は、バックグラウンド操作が完了した後に処理されます。Background- 列挙値は 4 です。操作は、他のすべての非アイドル操作が完了した後に処理されます。Input- 列挙値は 5 です。操作は入力と同じ優先度で処理されます。Loaded- 列挙値は 6 です。操作は、レイアウトとレンダリングが完了したときに処理されますが、入力優先度のアイテムが処理される直前です。具体的には、これは Loaded イベントを発生させるときに使用されます。Render- 列挙値は 7 です。操作はレンダリングと同じ優先度で処理されます。DataBind- 列挙値は 8 です。操作は、データ バインディングと同じ優先度で処理されます。Normal- 列挙値は 9 です。操作は通常の優先度で処理されます。これは、典型的なアプリケーションの優先度です。Send- 列挙値は 10 です。操作は、他の非同期操作の前に処理されます。これは最優先事項です。
ここで、何か問題が発生した場合にのみアプリケーションが閉じられるとします。つまり、ユーザーがアプリケーションを再起動できるように、アプリケーションは何も完了する必要がなく、生のシャットダウンだけで済みます。Inactive引数として与える必要があると言うのは正しいですか? Send完全にシャットダウンする前にすべてが終了するというのは本当ですか?