2012-01-11 3 views
3

Я хочу иметь возможность разрабатывать службу Windows, которая может запускать несколько экземпляров с разными параметрами. В идеале я хочу иметь возможность поддерживать эти параметры в панели управления на основе браузера.Служба наблюдения за динамической файловой системой C#

Я написал панель управления на C#, которая сохраняет данные конфигурации в файл XML. Из этого я хочу иметь возможность настроить количество запущенных сервисов и каковы их параметры. Я хочу иметь возможность динамически добавлять и удалять экземпляры службы по мере необходимости.

Мои вопросы: 1) Возможно ли это? 2) Можно ли запустить сервис с определенными свойствами с панели управления? (Может быть, используя «NET START» с параметрами командной строки?

[Редактировать] Я только что увидел что-то в Интернете относительно класса ServiceController, может ли это использоваться для добавления и удаления экземпляров службы, а также служб запуска/остановки ? [/ Edit]

Спасибо за любую помощь

ответ

3

Edit: Мой первоначальный ответ был фактически неправильно

Вы можете использовать параметр командной строки. s, либо с NET START (который, однако, будет принимать только параметры, начинающиеся с обратной косой черты) или с SC START (который будет принимать что-либо в качестве параметра). Вы не можете запустить службу с динамически выбранными параметрами командной строки. Параметры также могут быть указаны во время регистрации службы, и в этом случае они остаются постоянными после этого.

Однако запуск нескольких экземпляров службы звучит как неправильная идея. Нет ничего, что помешало бы вам создать экземпляр службы, которую вы настраиваете во время выполнения, с помощью связи с ним (например, с ServiceController.ExecuteCommand), что и должно делать IMHO.

Для общения с сервисом, смотри, например How to communicate with a windows service from an application that interacts with the desktop? и How to create and communicate with a C++ Windows Service in Visual Studio 2010?

+0

имеет смысл. Однако служба будет использовать наблюдатель файловой системы, и требуется несколько, потому что есть несколько папок для просмотра, и для каждого из них требуются различные действия, которые необходимо предпринять, когда появляется файл. Можно ли просматривать несколько папок из одной и той же службы? Так далеко, мне не удалось разобраться, как! Спасибо :) – CompanyDroneFromSector7G

+0

@bukko: Во-первых, мой первоначальный ответ был неправильным (я исправил его). Во-вторых, вы можете, конечно, смотреть несколько папок из одной и той же службы (например, с помощью кода, который просматривает одну папку много раз). – Jon

+0

Хорошо, кажется, что, как вы говорите, я могу добавить нескольких наблюдателей к тому же сервису, который выглядит как лучшее решение. Я нашел код, который добавляет любое количество наблюдателей в массив. Однако я не знаю, куда должен идти этот код, поскольку логическое место может показаться методом InitialzeComponent, за исключением того, что нам не разрешено вводить код там :( – CompanyDroneFromSector7G

Смежные вопросы