我有一个 WPF 应用程序,在文件中有两个方法Application_Startup
,它们分别与应用程序的和事件挂钩。下面是这两种方法的实现:Application_Exit
App.cs
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();
然后应用程序工作得很好。知道可能出了什么问题吗?提前致谢。