Я пытаюсь создать несколько служб 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?