0

应用程序在没有捕获异常的情况下不知不觉地退出。我们已经在应用程序中实现了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);
        }
    }
4

3 回答 3

1

您很可能内存不足。如果您的应用程序的内存使用量超过其限制,WP8 操作系统终止您的应用程序,而您的应用程序无法捕获任何异常。

限制在这里

对于故障排除,您可以使用DeviceExtendedProperties 类查询您的应用程序中的内存使用情况。归根结底,您需要确保您的应用程序永远不会超过 150。

您的应用程序可能存在内存泄漏。

于 2013-05-30T16:58:43.257 回答
0

不确定我是否遗漏了一些东西,但您不会只使用 NavigationService.Navigate 而不是 (Application.Current.RootVisual as PhoneApplicationFrame).Navigate 吗?

于 2013-05-30T14:26:30.310 回答
0

查看您的 App.xaml.cs 文件。有一个 Application_UnhandledException 方法。确保您在此方法中正确处理了异常,并且如果您设置 e.Handled = true,则此后不会使应用程序崩溃。

请注意,这不会捕获所有可能的未处理异常 - 例如,OutofMemoryException 仍会使应用程序崩溃,但它确实捕获了很多异常。

于 2013-05-30T13:17:43.880 回答