PageRenderTime 41ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/V4/Quickstarts/Commanding/Silverlight/Commanding/App.xaml.cs

#
C# | 74 lines | 45 code | 6 blank | 23 comment | 1 complexity | 9f196e867dd3fa866987a9d3333e3591 MD5 | raw file
  1. //===================================================================================
  2. // Microsoft patterns & practices
  3. // Composite Application Guidance for Windows Presentation Foundation and Silverlight
  4. //===================================================================================
  5. // Copyright (c) Microsoft Corporation. All rights reserved.
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
  7. // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
  8. // LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  9. // FITNESS FOR A PARTICULAR PURPOSE.
  10. //===================================================================================
  11. // The example companies, organizations, products, domain names,
  12. // e-mail addresses, logos, people, places, and events depicted
  13. // herein are fictitious. No association with any real company,
  14. // organization, product, domain name, email address, logo, person,
  15. // places, or events is intended or should be inferred.
  16. //===================================================================================
  17. using System;
  18. using System.Windows;
  19. namespace Commanding
  20. {
  21. public partial class App : Application
  22. {
  23. public App()
  24. {
  25. this.Startup += this.Application_Startup;
  26. this.Exit += this.Application_Exit;
  27. this.UnhandledException += this.Application_UnhandledException;
  28. InitializeComponent();
  29. }
  30. private void Application_Startup(object sender, StartupEventArgs e)
  31. {
  32. CommandingBootstrapper bootstrapper = new CommandingBootstrapper();
  33. bootstrapper.Run();
  34. }
  35. private void Application_Exit(object sender, EventArgs e)
  36. {
  37. }
  38. private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
  39. {
  40. // If the app is running outside of the debugger then report the exception using
  41. // the browser's exception mechanism. On IE this will display it a yellow alert
  42. // icon in the status bar and Firefox will display a script error.
  43. if (!System.Diagnostics.Debugger.IsAttached)
  44. {
  45. // NOTE: This will allow the application to continue running after an exception has been thrown
  46. // but not handled.
  47. // For production applications this error handling should be replaced with something that will
  48. // report the error to the website and stop the application.
  49. e.Handled = true;
  50. Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
  51. }
  52. }
  53. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
  54. private static void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
  55. {
  56. try
  57. {
  58. string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
  59. errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
  60. System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight 2 Application " + errorMsg + "\");");
  61. }
  62. catch (Exception)
  63. {
  64. }
  65. }
  66. }
  67. }