OSDN Git Service

5
[psychlops/silverlight.git] / test4 / App.xaml.cs
diff --git a/test4/App.xaml.cs b/test4/App.xaml.cs
new file mode 100644 (file)
index 0000000..e091cde
--- /dev/null
@@ -0,0 +1,66 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Net;\r
+using System.Windows;\r
+using System.Windows.Controls;\r
+using System.Windows.Documents;\r
+using System.Windows.Input;\r
+using System.Windows.Media;\r
+using System.Windows.Media.Animation;\r
+using System.Windows.Shapes;\r
+\r
+namespace PsychlopsSilverlight4test\r
+{\r
+       public partial class App : Application\r
+       {\r
+\r
+               public App()\r
+               {\r
+                       this.Startup += this.Application_Startup;\r
+                       this.Exit += this.Application_Exit;\r
+                       this.UnhandledException += this.Application_UnhandledException;\r
+\r
+                       InitializeComponent();\r
+               }\r
+\r
+               private void Application_Startup(object sender, StartupEventArgs e)\r
+               {\r
+                       this.RootVisual = new MainPage();\r
+               }\r
+\r
+               private void Application_Exit(object sender, EventArgs e)\r
+               {\r
+\r
+               }\r
+               private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)\r
+               {\r
+                       // アプリケーションがデバッガーの外側で実行されている場合、ブラウザーの\r
+                       // 例外メカニズムによって例外が報告されます。これにより、IE ではステータス バーに\r
+                       // 黄色の通知アイコンが表示され、Firefox にはスクリプト エラーが表示されます。\r
+                       if (!System.Diagnostics.Debugger.IsAttached)\r
+                       {\r
+\r
+                               // メモ : これにより、アプリケーションは例外がスローされた後も実行され続け、例外は\r
+                               // ハンドルされません。 \r
+                               // 実稼動アプリケーションでは、このエラー処理は、Web サイトにエラーを報告し、\r
+                               // アプリケーションを停止させるものに置換される必要があります。\r
+                               e.Handled = true;\r
+                               Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });\r
+                       }\r
+               }\r
+               private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)\r
+               {\r
+                       try\r
+                       {\r
+                               string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;\r
+                               errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");\r
+\r
+                               System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");\r
+                       }\r
+                       catch (Exception)\r
+                       {\r
+                       }\r
+               }\r
+       }\r
+}\r