1

次のようなアプリケーション ファイル XAML を持つ WPF/C# 4.0 アプリがあります。

<Application 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="XXX.App"
Startup="Application_Startup"
Exit="Application_Exit"
>
<Application.Resources>
     
</Application.Resources>

そして、その終了方法は次のとおりです。

    //it seems that it never passes here. Transferred to MainAppWindow_WindowClosing
    private void Application_Exit(object sender, ExitEventArgs e)
    {
        this.Dispatcher.BeginInvokeShutdown(DispatcherPriority.Background);
    }

アプリケーション ユーザーがコードを閉じたときに、このコードが渡されることはありません。このように動作するはずですか?私は何か間違ったことをしていますか?

4

2 に答える 2

6

私はそれを使用したことはありませんが、ドキュメントはそれを言います

アプリケーションがシャットダウンする直前に発生し、キャンセルできません。アプリケーションは、次のいずれかの理由でシャットダウンする可能性があります。

  • Application オブジェクトの Shutdown メソッドが、明示的に、または ShutdownMode プロパティによって決定されて呼び出されます。
  • ユーザーは、ログオフまたはシャットダウンしてセッションを終了します。

したがって、あなたの場合、これらの条件が満たされない可能性があります。ShutDownModeを変更してみましたか?

于 2011-10-01T00:23:47.870 に答える
1

Application_Exit メソッドは、Application.Current.Shutdown() メソッドによってアプリケーションをシャットダウンするか、アプリケーションからすべてのウィンドウを閉じるときに呼び出されます。(最後のウィンドウが閉じられるときに呼び出されます)。

Application.Current.Shutdown() メソッドを呼び出すと、開いているすべてのウィンドウが自動的に閉じられます。すべてのウィンドウが閉じているかどうかを確認してください。

于 2011-10-03T08:39:23.997 に答える