在App Unhandled Exception期间,EmailComposeTask不显示

时间:2013-11-07 05:54:28

标签: c# debugging windows-phone-8 unhandled-exception

我为我的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将不会显示。

可能是什么问题? 只有在调试和断点期间它才有效,而不是在我删除断点时。

1 个答案:

答案 0 :(得分:1)

UnhandledException处理程序不是您想要的正确位置。通常做的是在ApplicationSettings中存储异常信息(以及您认为有用的任何其他内容)并让您的应用程序死掉。在下次启动您的应用程序时,您可以检查存储中是否存在异常,如果有,则可以提示用户并打开电子邮件客户端。

你会发现这个小实用程序非常有用http://blogs.msdn.com/b/andypennell/archive/2010/11/01/error-reporting-on-windows-phone-7.aspx