Запуск приложения Windows Forms.из службы - PullRequest
0 голосов
/ 08 апреля 2010

У меня есть странное приложение, в котором для разработки и тестирования мне нужно приложение Windows Forms, чтобы я мог отслеживать, что он делает. Для производства приложение будет запущено из службы, и никакой видимый пользовательский интерфейс не требуется. Я действительно не хочу переписывать приложение. как только оно будет завершено в консольное приложение, я бы хотел оставить его как есть, но запустить его из службы.

У меня вопрос, будет ли это приложение нормально работать с сервисом? На данный момент у него есть элементы пользовательского интерфейса, и я смог успешно запустить приложение из службы, используя класс Process (System.Diagnostics).

Может ли что-то пойти не так с этим подходом?

Ответы [ 5 ]

2 голосов
/ 08 апреля 2010

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

#ifdef GUI
  // load gui
#else
  // run as service
#endif
1 голос
/ 08 апреля 2010

Я думаю, что нет проблем.

Если приложение является консольным приложением, вы могли бы контролировать видимость, используя только конфигурацию. Теперь вам нужно другое приложение (Winform), чтобы сделать то же самое.

1 голос
/ 08 апреля 2010

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

0 голосов
/ 08 апреля 2010

Вам нужно настроить значение поля Type в реестре SYSTEM\CurrentControlSet\Services\YourServiceName расположение реестра. См. эту статью .

Просто как примечание ; сервисы не предназначены для такой работы - они должны быть полностью в фоновом режиме.

Лучше было бы выставить какой-нибудь API внешнего управления, например, через сетевые сокеты. И тогда у вас может быть отдельное приложение Windows Forms, работающее в системном трее или в режиме Hide, которое появляется каждый раз, когда оно получает что-то от службы.

0 голосов
/ 08 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...