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

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

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

Добрый день! Подскажите пожалуйста. Не получается сделать обработку глобальных исключений в службе Windows Services. В WinForms Application делал вот так:
namespace CiToMB
{
    /// <summary>
    /// Class with program entry point.
    /// </summary>
    internal sealed class Program
    {
        /// <summary>
        /// Program entry point.
        /// </summary>
        [STAThread]
        private static void Main(string[] args)
        {
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(MyExceptionHandler);
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException,true);
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
 
        static void MyExceptionHandler(object sender, ThreadExceptionEventArgs e)
        {
           MessageBox.Show(e.Exception.Message);
        }
        
        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs args)
        {
            using (ThreadExceptionDialog exceptionDlg = new ThreadExceptionDialog((Exception)args.ExceptionObject))
            {
                exceptionDlg.ShowDialog();
            }
        }
    }
}
В службе так почему то не получается:
namespace CiToMB
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            System.Net.Mime.MediaTypeNames.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(MyExceptionHandler);
            System.Net.Mime.MediaTypeNames.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException, true);
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            ServiceBase[] ServicesToRun;
 
        #if DEBUG
            System.Diagnostics.Debugger.Launch();
        #endif
 
            ServicesToRun = new ServiceBase[] { new CiToMB() };
            ServiceBase.Run(ServicesToRun);
            static void MyExceptionHandler(object sender, ThreadExceptionEventArgs e)
            {
               MessageBox.Show(e.Exception.Message);
            }
        
            static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs args)
            {
                using (ThreadExceptionDialog exceptionDlg = new ThreadExceptionDialog((Exception)args.ExceptionObject))
                {
                    exceptionDlg.ShowDialog();
                }
            }
            
        }
    }
}
Подчёркивает Application если убрать методы обработки. Если они есть то пишет две ошибки:

Error 1 } expected

и

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

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

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

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

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


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

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

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