Обработка глобальных исключений в службе - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Подскажите пожалуйста. Не получается сделать обработку глобальных исключений в службе Windows Services. В WinForms Application делал вот так:
Листинг программы
  1. namespace CiToMB
  2. {
  3. /// <summary>
  4. /// Class with program entry point.
  5. /// </summary>
  6. internal sealed class Program
  7. {
  8. /// <summary>
  9. /// Program entry point.
  10. /// </summary>
  11. [STAThread]
  12. private static void Main(string[] args)
  13. {
  14. Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(MyExceptionHandler);
  15. Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException,true);
  16. AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
  17. Application.EnableVisualStyles();
  18. Application.SetCompatibleTextRenderingDefault(false);
  19. Application.Run(new MainForm());
  20. }
  21. static void MyExceptionHandler(object sender, ThreadExceptionEventArgs e)
  22. {
  23. MessageBox.Show(e.Exception.Message);
  24. }
  25. static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs args)
  26. {
  27. using (ThreadExceptionDialog exceptionDlg = new ThreadExceptionDialog((Exception)args.ExceptionObject))
  28. {
  29. exceptionDlg.ShowDialog();
  30. }
  31. }
  32. }
  33. }
В службе так почему то не получается:
Листинг программы
  1. namespace CiToMB
  2. {
  3. static class Program
  4. {
  5. /// <summary>
  6. /// The main entry point for the application.
  7. /// </summary>
  8. static void Main()
  9. {
  10. System.Net.Mime.MediaTypeNames.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(MyExceptionHandler);
  11. System.Net.Mime.MediaTypeNames.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException, true);
  12. AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
  13. ServiceBase[] ServicesToRun;
  14. #if DEBUG
  15. System.Diagnostics.Debugger.Launch();
  16. #endif
  17. ServicesToRun = new ServiceBase[] { new CiToMB() };
  18. ServiceBase.Run(ServicesToRun);
  19. static void MyExceptionHandler(object sender, ThreadExceptionEventArgs e)
  20. {
  21. MessageBox.Show(e.Exception.Message);
  22. }
  23. static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs args)
  24. {
  25. using (ThreadExceptionDialog exceptionDlg = new ThreadExceptionDialog((Exception)args.ExceptionObject))
  26. {
  27. exceptionDlg.ShowDialog();
  28. }
  29. }
  30. }
  31. }
  32. }
Подчёркивает Application если убрать методы обработки. Если они есть то пишет две ошибки:

Error 1 } expected

и

Error 2 Type or namespace definition, or end-of-file expected

Как правильно сделать, подскажите пожалуйста? Скобки и запятые проверял, всё вроде правильно. Догадываюсь, что Application нельзя использовать в службе) А как правильно - не знаю )

Решение задачи: «Обработка глобальных исключений в службе»

textual
Листинг программы
  1. Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(MyExceptionHandler)
  2. ThreadExceptionDialog exceptionDlg = new ThreadExceptionDialog((Exception)args.ExceptionObject

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут