我为我的WP8应用程序创建了一个错误Logging,这样每当应用程序崩溃时,MessageBox都会显示并要求用户通过电子邮件发送日志文件。
这是我在App.xaml.cs中实现它的方式,
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
//File Handler for Log file
Log.write("some string here");
MessageBoxResult result = MessageBox.Show("String", "String", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK) // BREAKPOINT here
{
EmailComposeTask emailComposeTask = new EmailComposeTask();
emailComposeTask.Subject = "Unhandled Exception";
emailComposeTask.Body = "Device OS Version: " + Environment.OSVersion.ToString() + "\n\n" + Log.readFile();
emailComposeTask.To = "email@email.com";
emailComposeTask.Show();
}
if (Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
Debugger.Break();
}
}
在我的设备调试期间,一切正常,并且能够将日志内容发送到我的电子邮件如果我在if (result == MessageBoxResult.OK)
或emailComposeTask.Show();
之前的任何一行中放置了一个断点
如果我禁用断点,MessageBox显示BUT emailComposeTask
将不会显示。
可能是什么问题? 只有在调试和断点期间它才有效,而不是在我删除断点时。
答案 0 :(得分:1)
UnhandledException处理程序不是您想要的正确位置。通常做的是在ApplicationSettings中存储异常信息(以及您认为有用的任何其他内容)并让您的应用程序死掉。在下次启动您的应用程序时,您可以检查存储中是否存在异常,如果有,则可以提示用户并打开电子邮件客户端。
你会发现这个小实用程序非常有用http://blogs.msdn.com/b/andypennell/archive/2010/11/01/error-reporting-on-windows-phone-7.aspx