Я пытаюсь создать несколько служб Windows, чтобы делать разные вещи. Например, мне нужны службы Windows, которые будут:
- Отправить ежедневный отчет по электронной почте
- Периодически очищайте некоторую архивированную информацию каждые 30 минут.
- и др.
Задачи, которые мне нужны для работы служб Windows, различны, поэтому мне не очень нравится идея иметь их всех в одной службе.
То, что у меня есть, - это проект в Visual Studio 2008. Я создал службу Windows, я настроил таймер на событии OnStart (он просто пишет в текстовый файл каждые 5 секунд для тестирования цели). Затем я добавил установщика в проект, и когда я запускаю InstallUtil.exe, все работает нормально.
Проблема возникает, когда я добавляю вторую службу Windows в тот же проект. Я снова установил код OnStart с той же информацией о регистрации (немного другой, чтобы я мог указать, какая служба записывает в журнал). Со второй службой Windows я изменил главное событие в Program.cs:
static void Main(string[] args)
{
ServiceBase[] ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
to:
static void Main(string[] args)
{
ServiceBase[] ServicesToRun = new ServiceBase[]
{
new Service1(),
new Service2()
};
ServiceBase.Run(ServicesToRun);
}
На данный момент ошибок компиляции не существует, но служба Service2 никогда ничего не делает... задача ведения журнала никогда не срабатывает.
Я сузил его до того, что второй сервис не связан с ним "установщиком". Затем я попытался добавить установщик так, как я сделал с первой службой (т.е. Щелкните правой кнопкой мыши на конструкторе служб и нажмите "Добавить установщик" ). Теперь, когда я перехожу к файлу ProjectInstaller.cs, там есть другой serviceInstaller (serviceInstaller2).
Теперь, когда я создаю проект и пытаюсь установить службы, и я иду в окно панели управления "Службы", и я пытаюсь запустить Service1, я получаю следующее сообщение об ошибке:
Windows не удалось запустить службу Service1 на локальном компьютере.
Ошибка 1083: исполняемая программа, для которой эта служба настроена для запуска, не выполняет службу.
Я получаю то же сообщение об ошибке, если я попытаюсь запустить Service2 (за исключением того, что сообщение об ошибке идентифицирует Service2, конечно).
Есть ли что-то, что мне не хватает, чтобы получить две службы, запущенные из одного exe?