Ste*_*ham 2 silverlight exception-handling windows-phone-7
我在模拟器和手机本身都发生了一些无法解释的崩溃事件.基本上当我的应用程序崩溃时,我没有任何对话框,手机返回到主屏幕.
我有以下代码来显示MessageBox,但这是以某种方式绕过...
// Code to execute if a navigation fails
private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
{
MessageBox.Show(e.Exception.ToString());
}
// Code to execute on Unhandled Exceptions
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
MessageBox.Show(e.ExceptionObject.ToString());
}
Run Code Online (Sandbox Code Playgroud)
我想到它可能与记忆有关,因为我的应用处理了很多图像.但我认为仍然会被我上面未处理的异常代码捕获.关于我应该如何追踪这一点的任何想法将不胜感激.
发生在我身上的一些事情:
StackOverflowException,那就无法抓住,只会让应用炸弹您可能希望添加一些仅调试构建的持久性日志记录(在应用程序本身中加载和显示),以便更容易计算出崩溃前应用程序的上一次运行的程度.
密切关注您的内存使用情况.OutOfMemoryException在不调用Application_UnhandledException处理程序的情况下崩溃您的应用程序.您可以使用一些内置方法检查当前内存使用情况.我刚刚在博客上发表过这篇文章http://kodierer.blogspot.com/2010/09/windows-phone-memory-constraints.html
这是您应该添加的基本代码:
var timer = new DispatcherTimer {Interval = TimeSpan.FromSeconds(2)};
timer.Tick += (s, e) =>
{
var memuse = (long)DeviceExtendedProperties.GetValue("ApplicationPeakMemoryUsage");
var maxmem = (long)DeviceExtendedProperties.GetValue("DeviceTotalMemory");
memuse /= 1024 * 1024;
maxmem /= 1024 * 1024;
MyTextBlock.Text = String.Format("Mem usage: {0} / {1} MB", memuse, maxmem);
};
timer.Start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1630 次 |
| 最近记录: |