Пожалуйста, вы можете скачать это тестовое приложение, которое точно соответствует сценарию, о котором вы говорите:
https://docs.google.com/leaf?id=0Bw_NnV9fhgmgMThjNDgzOTgtODNiOC00NDE1LWEyMTYtNzVhOTMyNzlmZjZk&hl=en&authkey=CMuupNkC
Я только что создал это.Это сервис, который эффективно использует тот же код, что и вы.Единственное отличие состоит в том, что я использовал панель инструментов для перетаскивания журнала событий в конструктор служб - для настройки журнала было указано «Приложение», а для источника - «Сервис1».
Откройте командную строку VS впапку проекта, перейдите в bin\debug
и запустите installutil windowsservice1.exe
- указав некоторые учетные данные (поэтому вы устанавливаете службу dev непосредственно из выходной папки bin).
Запустите службу и просмотрите журнал приложения - этобудет писать каждые десять секунд, как вы ожидаете увидеть из своего кода.
Если предположить, что это работает на вашей машине (tm), как на моей машине (tm), то я бы предположил, что проблема заключается в самой регистрации событийили ужас ужасов - ваш сервис не запускается из выходной папки сборки (большинство разработчиков в моей команде настаивают на том, чтобы их сервисы запускались из другой папки, а затем клянутся, когда забывают обновить двоичные файлы при запускеотладка!).
Как я уже говорил в своем комментарии, вам действительно нужно иметь возможность прикрепитьотладчик этого и остановите обратный вызов, чтобы убедиться, что он не запущен.Я никогда не полагаюсь на журнал событий для диагностических сообщений просто потому, что журнал может быть переполнен, или разрешения могут помешать вам и т. Д. И т. Д. - это может быть компонент платформы Windows, но он не так надежен, как хотелось бы.
однако отладчик редко врет (если только развернутые двоичные файлы не устарели;)).Скомпилируйте отладочную версию своего проекта и убедитесь, что она установлена в списке служб , запустите ее, а затем подключите непосредственно к файлу exe (нет смысла пытатьсяattach to [service] .vshost.exe - VS не может автоматически подключать или размещать службы Windows, так как единственный способ, которым они могут работать, это выполнить их через svchost.exe).
Надеюсь, это поможет.