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

标签 c# wpf

我有一个 WPF 应用程序,在 App.cs 文件中有两个方法 Application_StartupApplication_Exit,它们挂接到 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();

然后应用程序就可以正常工作了。知道可能出了什么问题吗?提前致谢。

最佳答案

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

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

关于c# - 应用程序在执行 Application_Startup() 后立即终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281214/

相关文章:

c# - 结合 WPF + WCF + Entity Framework 的好例子

c++ - 在 C++ 中将父窗体的引用传递给子 UserControl

c# - 将 XAML WPF 窗口转换为 WinForm

c# - 无论如何将命令绑定(bind)到 XAML/WPF/MVVM 中的用户控件中的按钮的所有实例

c# - 在 AUTOFAC 中对同一接口(interface)使用不同的 JSON 配置文件

C#、正则表达式和 AND 运算符

c# - TableLayoutPanel 极慢

c# - 加密 URL 中的路由数据

c# - 如何在0.5秒内用WPF绘制万点线?

WPF 损坏状态异常。如何实现 HandleProcessCorruptedStateExceptions