Проблема с отладкой службы Windows

#c# #windows-services

#c# #windows-services

Вопрос:

Я создал службу Windows, которую я пытаюсь отладить, для этого я использую вкладку debug, нажмите «прикрепить к процессу», выберите Myservice.exe это не пройдет через точку останова.

В сервисе при событии запуска я писал следующий код

      protected override void OnStart(string[] args)
    {

        Console.WriteLine("Press Enter to terminate ...");
    }
  

Пожалуйста, помогите мне, как решить эту проблему….

Ответ №1:

Используйте следующий метод.В вашем коде. Это, безусловно, самый простой способ установить точку останова в библиотеке служб.

Debugger.Break();

 protected override void OnStart(string[] args)
    {
        Debugger.Break();
        Console.WriteLine("Press Enter to terminate ...");
    }
  

Ответ №2:

Вы также могли бы использовать что-то вроде этого, чтобы запросить подключение отладчика в режиме отладки:

 #if DEBUG    
if (!Debugger.IsAttached)
{
    Debugger.Launch();
}    
#endif
  

Вы могли бы даже использовать этот код в своем основном методе, он будет запускать службу как обычное приложение в режиме отладки:

 public static void Main()
{
    var service = new YourService();
#if DEBUG
    service.Start();
    Console.ReadLine();
    service.Stop();
#else
    var ServicesToRun = new System.ServiceProcess.ServiceBase[] { service };
    System.ServiceProcess.ServiceBase.Run(ServicesToRun);
#endif
}