Несколько Windows Services в Одном exe

непосредственно в сводной таблице, это невозможно, поэтому вам нужно использовать некоторую формулу для ее обрезки, а затем использовать оттуда сводную таблицу:

=QUERY(A:B, "where month(A)+1 matches '"&MONTH(TODAY())&"'
               and A <= date '"&TEXT(TODAY(), "yyyy-MM-dd")&"'")

0 [111 ]

25
задан John Saunders 12 October 2009 в 16:03
поделиться

6 ответов

На самом деле я создаю нечто очень похожее на о чем ты думаешь Я решил (пока что), чтобы все мои «сервисы» (хотя это и не сервисы, а «контроллер») реализовали определенный интерфейс (с помощью операций init () и execute ()). как перечисление FREQUENCY).

Контроллер - это служба Windows, которая читает список программ / dll из файла настроек xml во время выполнения, загружает их в список и вызывает их метод execute () (если это применимо) в любом случае. частоту, которую они определили.

В моем случае каждая программа также содержит пользовательский элемент управления, который загружается на вкладку контроллера, что позволяет пользователю контролировать / изменять его. Я' Я напишу код, если вам интересно.

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

1
ответ дан 28 November 2019 в 21:48
поделиться

Сегодня у меня была похожая проблема, и мне удалось ее решить.

Во-первых, я убедился, что у каждой из служб есть значимое и уникальное свойство ServiceName. Генератор дал обеим службам одно и то же имя, что не помогло бы.

Затем я удалил и регенерировал класс ProjectInstaller и добавил установщики для каждого из классов. Я убедился, что они оба были созданы в статическом методе Main.

Теперь я могу установить две службы с одной dll, но, к сожалению, когда я запускаю одну из служб, кажется, что она выполняет функции и самой, и другой службы. . То есть обе службы работают (даже если только одна из служб отображается как «Запущена» в Диспетчере компьютеров). Я все еще пытаюсь понять это ...

2
ответ дан 28 November 2019 в 21:48
поделиться

Сегодня у меня была такая же проблема, и мне удалось ее исправить. В моем случае мне просто нужно было открыть файлы * .designer.cs моих служб и убедиться, что имя службы указано правильно. Что еще более важно, то же имя следует использовать в * Installer.Designer.cs, и если у вас есть код в * Installer.cs.

Я думаю, что эта ошибка возникает только из-за несоответствия имени.

Надеюсь, это поможет

0
ответ дан 28 November 2019 в 21:48
поделиться

Думаю, вы, ребята, уже решили эту проблему, но в случае, если это понадобится кому-то еще, я отправлю ответ на этот вопрос, на который сегодня у меня ушло несколько часов. Решение состоит не в добавлении другого установщика проекта, а в установщике службы, которая является компонентом установщика проекта. Для этого вновь добавленного установщика службы необходимо настроить второе имя службы.

5
ответ дан 28 November 2019 в 21:48
поделиться

Я понял, как иметь один исполняемый файл, но две службы. Каждая служба устанавливается в диспетчер служб со своим именем и возможностью запуска / остановки. Я думаю, это то, что вы хотите, верно? Вот что я сделал:

  1. Создал сервисный проект.
  2. В тот же проект добавлена ​​вторая служба (с уникальным именем службы).
  3. Добавлен установщик в обе службы (ServiceA и ServiceB).
  4. В файле ProjectInstaller.Designer.vb я изменил строку Me.Installers.AddRange, чтобы отобразить оба установщика служб. (Me.ServiceInstaller1, Me.ServiceInstaller2)
  5. В основной точке входа основной службы (ServiceA в моем случае) я установил для переменной ServicesToRun массив ServiceBase, содержащий все службы, которые я хочу, чтобы она запускалась (ServiceA и ServiceB). Это важный шаг, поскольку диспетчер служб устанавливает свойство на основе количества аргументов здесь - либо для разрешения нескольких экземпляров одного и того же exe-файла, либо только для одного экземпляра.
  6. Добавьте проект установщика и используйте выходные данные служб.
  7. Добавьте настраиваемое действие, используя выходные данные служб.

Вы можете найти демонстрационный код здесь:
http://code.google.com/p/multi-service-install/

Наслаждайтесь!

15
ответ дан 28 November 2019 в 21:48
поделиться

Installing 2 distinct and unrelated services in one executable has a funny smell to me. While it's possible to get it to work, it doesn't make it right.

From what it sounds like, you need to perform some different tasks at various intervals and your tasks may or may not be related. Have you looked into Quartz.NET? It sounds like a good fit for your needs.

http://quartznet.sourceforge.net/features.html

0
ответ дан 28 November 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: