我有一个 WPF 应用程序,在 App.cs
文件中有两个方法 Application_Startup
和 Application_Exit
,它们挂接到 Startup
和 Exit
分别是应用程序的事件。下面是这两种方法的实现:
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/