using System; | |
using System.Windows; | |
using Microsoft.Silverlight.Testing; | |
namespace Google.ProtocolBuffers | |
{ | |
public partial class App : Application | |
{ | |
public App() | |
{ | |
this.Startup += this.Application_Startup; | |
this.Exit += this.Application_Exit; | |
this.UnhandledException += this.Application_UnhandledException; | |
//InitializeComponent(); | |
} | |
private void Application_Startup(object sender, StartupEventArgs e) | |
{ | |
this.RootVisual = UnitTestSystem.CreateTestPage(); | |
} | |
private void Application_Exit(object sender, EventArgs e) | |
{ | |
} | |
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) | |
{ | |
// If the app is running outside of the debugger then report the exception using | |
// the browser's exception mechanism. On IE this will display it a yellow alert | |
// icon in the status bar and Firefox will display a script error. | |
if (!System.Diagnostics.Debugger.IsAttached) | |
{ | |
// NOTE: This will allow the application to continue running after an exception has been thrown | |
// but not handled. | |
// For production applications this error handling should be replaced with something that will | |
// report the error to the website and stop the application. | |
e.Handled = true; | |
Deployment.Current.Dispatcher.BeginInvoke( | |
new EventHandler<ApplicationUnhandledExceptionEventArgs>(ReportErrorToDOM), | |
new object[] { sender, e } ); | |
} | |
} | |
private void ReportErrorToDOM(object sender, ApplicationUnhandledExceptionEventArgs e) | |
{ | |
try | |
{ | |
string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace; | |
errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n"); | |
System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight 2 Application " + errorMsg + "\");"); | |
} | |
catch (Exception) | |
{ | |
} | |
} | |
} | |
} |