Вопрос

Я пытаюсь начать сборку отладки WindowsService Но получаю ошибку, которую она не началась своевременно.

Я вычистил CTOR и OnStart Но все же это не начнется, поэтому я думаю, что, может быть, DLL, которую он загружает, должен быть лучше установлен, а не просто в каталоге отладки моего каталога проекта. Может быть, все это в main() вывешивает это, чтобы высохнуть?

Есть ли указатели на отладку услуги? Я не могу запустить его напрямую в Vstudio, потому что, очевидно, это не позволяет вступить в его OnCustomCommand(int cmd) Участник и ломает его там.

Это было полезно?

Решение

Если я правильно понимаю, вы хотите иметь возможность отладить услугу, прежде чем он составит в своем холостом ходу », началось?

Вы можете использовать Debugger.break () функция для этого. Например, мы часто вкладываем следующее в нашу основную функцию, находясь в сборке отладки:

#if DEBUG

if (!Debugger.IsAttached)
{
    Debugger.Break();
}

#endif

Другие советы

Я бы сделал только как можно меньше в методе OnStart, достаточно init, чтобы запустить нить, которая выполняет всю работу, так что вы можете вернуться из OnStart как можно быстрее. Затем в Delegate вы можете добавить код Reddog, чтобы проникнуть в отладчик, возможно, с потоком.

Другая альтернатива - добавить основной метод в ваш сервис, который может создать экземпляр класса сервиса и вызвать Onstart/onstop и изменить вывод проекта на приложение консоли, затем вы получите лучшее из обоих миров, он будет установлен как Сервис через InstallUtil, и вы можете запустить его и отлаживать в Visual Studio в качестве приложения для консоли.

Подробности здесь

Если вы хотите отладить услугу только в качестве сервиса, то я бы предположил, что ваш метод ONSTART запускает поток, который выполняет обработку, а затем возвращается, то поток делегат может сделать поток. Debugger.break ();

Сон потока дает вам возможность прикрепить отладчика к процессу, после того как вы запустили службу с помощью менеджера по управлению сервисом, затем он попадает в отладчик (), который заставит отладчик сломаться, что позволит вам сделать один шаг. Ключевым моментом является возвращение из OnStart до 30 секунд и прикрепить отладчика к процессу, прежде чем вы нажмете свои точки останова.

Кроме того, я думаю, что Debugger.Break дает вам возможность прикрепить отладчика, поэтому попробуйте это в коде (не уверен, что он хорошо играет с услугами, хотя у них не должно быть пользовательского интерфейса), у вас может быть снят с рук отладчика. Breake. Breake. в ваш делегат и прикреплять к процессу до 30 секунд.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top