应用程序在Windows Phone中不知不觉退出

时间:2013-05-30 13:05:19

标签: windows-phone-8 windows-phone

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

3 个答案:

答案 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?