Я пытаюсь выполнить несколько подобных сервисов через ServiceBase.Run(ServiceBase[] )
но это только выполняет первый. MSDN явно не отклоняет это; эта выборка означает, что они все должны быть различными типами? (полужирный мной, не MSDN),
Назовите эту перегрузку в основном () функцией сервисного исполняемого файла для загрузки массива связанных сервисов.
В этом и заключается замысел. Идея здесь в том, что вы можете заставить один исполняемый файл создавать "несколько служб", а не только один тип службы.
Когда служба регистрируется в SCM, предполагается, что каждая служба уникальна. Это предполагает (и я верю, что так оно и есть), что каждый элемент вашего массива должен быть уникальной реализацией ServiceBase.
Если вы действительно пытаетесь иметь несколько копий одного и того же сервиса, я бы переосмыслил ваш проект. Просто заставьте службу запускать несколько потоков, используя один и тот же метод, и это обеспечит тот же эффект с одним экземпляром службы.