应用程序在执行Application_Startup()后立即终止

时间:2013-08-16 19:58:36

标签: c# wpf

我有一个WPF应用程序,在Application_Startup文件中有两个方法Application_ExitApp.cs,这些方法与StartupExit事件挂钩申请分别。以下是这两种方法的实现:

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中注释掉所有逻辑并将这两行放在一边:

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

然后应用程序工作得很好。知道什么可能出错吗?提前谢谢。

1 个答案:

答案 0 :(得分:4)

可能是因为您有效关闭了最后一个窗口而自动关闭。您可以尝试在获取凭据时将Application.ShutdownMode更改为OnExplicitShutdown

(您也可以将其永久设置为OnMainWindowClose并将Application.MainWindow设置为主视图