1

ファイル内に と のApplication_Startup2つのメソッドを持つ WPF アプリケーションがあり、それぞれアプリケーションのとイベントにフックされています。これら 2 つのメソッドの実装は次のとおりです。Application_ExitApp.csStartupExit

private void Application_Startup(object sender, StartupEventArgs e)
{
    try
    {
        if (LoginModel.TryLoginUsingSavedCredentials())
        {
            MainView view = new MainView();
            view.Show();
        }
        else
        {
            LoginView loginView = new LoginView();
            var result = loginView.ShowDialog();

            if (result.HasValue && result.Value)
            {
                MainView view = new MainView();
                view.Show();
            }
        }
    }
    catch (FaultException ex)
    {
        Views.MessageBox.ShowMessage("Login failed",
            string.Format("Unabled to login.\r\n{0}", ex.Message),
            Entities.Enums.DialogType.OK,
            Entities.Enums.DialogIcon.Error);
    }
}

private void Application_Exit(object sender, ExitEventArgs e)
{
    ConnectionFactory.Instance.CloseAllProxyChannels();
}

アプリケーションを実行すると、LoginModel.TryLoginUsingSavedCredentials()false が返された場合、LoginViewが表示されます。ここで、ブレークポイントを設定しif(result.HasValue ...)てステップ インします。MainViewが作成されview.Show()て実行されますが、デバッガーの矢印がすぐにApplication_Exitメソッドにジャンプし、アプリケーションが終了します。例外、出力エラー、ダンプ ファイルなどは表示されません。

奇妙なことに、すべてのロジックをコメントアウトして、Application_Startup次の 2 行を入れるだけです。

MainView view = new MainView();
view.Show();

その後、アプリケーションは問題なく動作します。何が間違っている可能性がありますか?前もって感謝します。

4

1 に答える 1

4

最後のウィンドウを効果的に閉じるため、おそらく自動シャットダウンです。Application.ShutdownMode資格情報を取得する際にを に変更してみることができOnExplicitShutdownます。

OnMainWindowClose永続的に設定Application.MainWindowしてメインビューに設定することもできます)

于 2013-08-16T20:04:53.657 に答える