应用程序在不知情的情况下退出而没有捕获异常。我们在应用程序中实现了 try catch功能。我无法在App未处理的异常中捕获异常。
例如,我们的应用程序中有子菜单屏幕,同时显示子菜单内容列表屏幕。但有时在子菜单屏幕上不断工作,应用程序在不知不觉中退出。 请建议。
子菜单页面示例代码: 我有两个堆栈面板,每个都有相同的代码集,用于导航到其他页面。
private void stk_searchworkorder_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
try
{
(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/MMS/WOSearch.xaml?History=false", UriKind.RelativeOrAbsolute));
}
catch (System.Reflection.TargetException ex) { } catch (Exception ex)
{
MessageBox.Show("Unknown exception", app.glbExceptionTitle, MessageBoxButton.OK);
}
}
private void stk_searchworkorder_MouseEnter(object sender, MouseEventArgs e)
{
try
{
SolidColorBrush br = new SolidColorBrush(Color.FromArgb(255, 40, 40, 40));
stk_searchworkorder.Background = br;
}
catch (System.Reflection.TargetException ex) { }
catch (Exception ex)
{
MessageBox.Show("Unknown exception", app.glbExceptionTitle, MessageBoxButton.OK);
}
}
private void stk_searchworkorder_MouseLeave(object sender, MouseEventArgs e)
{
try
{
SolidColorBrush br = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
stk_searchworkorder.Background = br;
}
catch (System.Reflection.TargetException ex) { }
catch (Exception ex)
{
MessageBox.Show("Unknown exception", app.glbExceptionTitle, MessageBoxButton.OK);
}
}
答案 0 :(得分:1)
你很可能内存不足。如果您的应用程序的内存使用量超过其限制,WP8操作系统将终止您的应用程序,而您的应用程序无法捕获任何异常。
限制为here
要进行问题排查,您可以使用DeviceExtendedProperties class查询应用内的内存使用情况。在一天结束时,您需要确保您的应用程序永远不会超过150。
您的应用程序可能存在内存泄漏。
答案 1 :(得分:0)
查看App.xaml.cs文件。有一个Application_UnhandledException方法。确保在此方法中正确处理异常,如果设置e.Handled = true,则此后不会使应用程序崩溃。
请注意,这不会捕获每个可能的未处理异常 - 例如,OutofMemoryException仍会使应用程序崩溃,但它确实会捕获很多异常。
答案 2 :(得分:0)
不确定我是否遗漏了某些东西但是你不会只使用NavigationService.Navigate而不是(Application.Current.RootVisual作为PhoneApplicationFrame).Navigate?