-1

我为我的 WP8 应用程序创建了一个错误日志记录,这样每当应用程序崩溃时,就会显示一个 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 会显示但emailComposeTask不会显示。

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

4

1 回答 1

1

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

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

于 2013-11-07T06:55:03.330 回答