public static void Show(this Exception e)
 {
     // Exceptions viewer must be shown on STA thread.
     LogViewer.Invoke(() =>
     {
         var exceptionReporter = new ExceptionReporting.ExceptionReporter();
         exceptionReporter.Show(e);
     });
 }
Ejemplo n.º 2
0
        private void TrackUnhandledExceptions()
        {
            var reporter = new ExceptionReporting.ExceptionReporter();

            reporter.Config.AppName                  = "ServiceMatrix";
            reporter.Config.AppVersion               = "2.0.2";
            reporter.Config.CompanyName              = "Particular Software";
            reporter.Config.ContactEmail             = "*****@*****.**";
            reporter.Config.EmailReportAddress       = "*****@*****.**";
            reporter.Config.WebUrl                   = "http://particular.net";
            reporter.Config.TitleText                = "ServiceMatrix - Unexpected error";
            reporter.Config.ShowFullDetail           = false;
            reporter.Config.ShowLessMoreDetailButton = true;
            reporter.Config.ContactMessageTop        = "[ServiceMatrix] Exception Report";

            var type  = typeof(TraceSourceExtensions);
            var field = type.GetField("ShowExceptionAction", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);

            field.SetValue(null, new Action <string, Exception>((s, e) =>
            {
                var customMessage = "";

                if (File.Exists(StatisticsManager.LoggingFile))
                {
                    using (var fileStream = new FileStream(StatisticsManager.LoggingFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                        using (var textReader = new StreamReader(fileStream))
                        {
                            customMessage = textReader.ReadToEnd();
                        }
                }

                if (!(e is ElementAlreadyExistsException))
                {
                    if (string.IsNullOrEmpty(customMessage))
                    {
                        reporter.Show(e);
                    }
                    else
                    {
                        reporter.Show(e.Message + Environment.NewLine + Environment.NewLine +
                                      "Additional Log:" + Environment.NewLine + customMessage, e);
                    }
                }
            }));
        }