Визуальная обратная связь от сервиса C # - PullRequest
1 голос
/ 24 апреля 2009

Правда ли, что служба, написанная на C #, не может предоставить визуальную обратную связь для рабочего стола?

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

На ум приходят только два варианта:

  1. MessageBox.Show - Оглядываясь вокруг, кажется, что это не вариант.
  2. Показать пользовательскую форму

Я не указал причины, по которым нужно показывать это окно сообщений. Пожалуйста, предположите, что это нужно показать, так как я не хочу получать ответы о «хорошей практике». По крайней мере, на данный момент.

Ответы [ 3 ]

4 голосов
/ 24 апреля 2009

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

См. статью базы знаний и статью MSDN , если вы действительно хотите это сделать. Они содержат некоторые советы, как этого добиться, и вам, вероятно, понадобится использовать P / Invoke из C #.

1 голос
/ 24 апреля 2009

Я никогда не использовал его, и я включаю все заявления об отказе от этого.

Однако вы можете проверить перечисление MessageBoxOptions.ServiceNotification.

Вот хороший пост в блоге , подробно описывающий его использование.

1 голос
/ 24 апреля 2009

Вот несколько способов, которыми вы можете создавать интерактивные сервисы. Но они исчезли с Vista.

Одним из способов получения пользователем информации от службы является создание отдельного пользовательского интерфейса для этой цели. Служба может иметь конечную точку WCF, например, и выдавать сообщения, которые будет отображаться в GUI. Таким образом, вы отображаете сообщение, только когда пользователь вошел в систему, и это не представляет угрозы для безопасности, если открыть окно из учетной записи LocalSystem. Вы можете легко запустить этот графический интерфейс из трея и всплывающего тоста, чтобы он не был навязчивым и начинался, когда пользователь входит в систему. Это гораздо лучше, чем пытаться напрямую взаимодействовать с рабочим столом.

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