Отладка службы Windows утомительна - PullRequest
0 голосов
/ 06 апреля 2011

Я создаю свой первый Windows-сервис ... какое приключение.

Чтобы начать, я прошёл следующее прохождение:

http://msdn.microsoft.com/en-us/library/zt39148a.aspx#Y902

Он очень хорошо структурирован и работает! ... Это означает, что я получаю сообщения журнала In OnStart и In OnStop в созданном журнале событий.

Теперь мой вопрос таков:

Каждый раз, когда я изменяю код службы, мне нужно пересобрать проект установки, добавить проект службы в качестве основного вывода проекта и переустановить службу.

Это довольно утомительно, поэтому я спрашиваю, нет ли лучшего способа проверить и отладить службу.

С наилучшими пожеланиями

Ответы [ 2 ]

5 голосов
/ 06 апреля 2011

Как только ваша служба остановлена, вы сможете обновить двоичный файл, просто скопировав новую версию поверх старой версии.

1 голос
/ 06 апреля 2011

Иногда, если я просто хочу протестировать некоторый код в службе Windows без необходимости его запуска в качестве службы, я изменяю функцию Main ().

Итак, вместо моего Основного существо выглядит так:

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] 
{ 
    new Service1() 
};
ServiceBase.Run( ServicesToRun );   

Я изменяю это только на

Service1 service = new Service1();
service.Run();
// Put a breakpoint on the following line to always catch
// your service when it has finished its work
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

И давайте скажем, что мой метод OnStart выглядит примерно так:

protected override void OnStart(string[] args)
 {
     // code to start your service.
     ThreadStart ts = new ThreadStart(Run);
     Thread t = new Thread(ts);
     t.Start();
}

Таким образом, Run () - это просто метод, который запускает ваш метод OnStart.

Помните, что это не гарантия того, что ваш сервис будет работать правильно после установки в качестве сервиса. Но иногда полезно быстро протестировать некоторый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...