2010-11-24 4 views
1

Я пытаюсь передать параметры моей службе Windows, но аргументы в методе OnStart всегда пусты.Как передать аргументы службе Windows

protected override void OnStart(string[] args) 
     { 
      System.Diagnostics.Debugger.Launch(); 
     } 

У меня есть несколько экземпляров моего сервиса, установленных на одном компьютере. Каждый из них должен использовать другую конфигурацию, чтобы идея получить имя службы и в соответствии с этим, чтобы прочитать правильную конфигурацию.

ответ

1

Вы передаете параметры через сервисный апплет? Сервисы не могут принимать аргументы командной строки и вместо этого должны передаваться через апплет служб в окне «Управление компьютером».

+0

Когда я пытаюсь добавить в поле «Параметры запуска», я все равно получаю пустые аргументы. – UshaP 2010-11-24 21:48:01

+0

Что-то должно быть выключено, параметры запуска переходят в массив args, о котором вы говорили. В качестве альтернативы, я нашел статью об указании этих параметров в установщике: http://stackoverflow.com/questions/200163/am-i-running-as-a-service/2111492#2111492 – 2010-11-24 21:56:09

0

Если вы хотите получить имя службы, почему бы не просто взглянуть на ServiceBase.ServiceName?

protected override void OnStart(string[] args) 
{ 
    switch (this.ServiceName) 
    { 
     // .... 
    } 
} 

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

0

Используйте файл настроек (щелкните правой кнопкой мыши, добавьте элемент, настройки), который автоматически сгенерирует файл конфигурации приложения. Затем в бункере для каждого экземпляра вы можете установить значения в config - если вы используете их из разных мест.

Если экземпляры нескольких экземпляров заканчиваются из одного места, подход к файлу конфигурации не будет работать. В этом случае я бы рекомендовал обычный exe с методом void main(string[] args), а затем вы можете использовать Task Scheduler в Windows для определения аргументов и планирования.

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