Сервис с усложнениями пользовательского интерфейса - PullRequest
1 голос
/ 08 апреля 2011

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

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

Отлично. У меня есть служба, которая выполняет некоторую обработку данных и, возможно, должна предупредить пользователя о проблемах с данными. Я использую WCF, поэтому написанная мною служба может взаимодействовать с приложением Windows Forms, которое я также написал. Приложение «Формы» просто открывает всплывающую подсказку в области уведомлений, когда служба сообщает об этом.

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

Что я хочу знать, так это то, как я могу перезапустить свое приложение Forms, если пользователь закрывает его, случайно или намеренно? У меня в голове есть два пути.

  1. Есть другое приложение, которое проверяет, запущено ли приложение форм. Но что, если оба закрыты? Еще одно приложение для проверки статуса этого? И еще для проверки статуса чего? Я думаю, что нет:)

  2. Пусть служба проверит сеансы и запустит приложение Forms в соответствующем сеансе, когда пользователь вошел в систему в интерактивном режиме. Ненадежно. Что если это терминальный сервер?

Это не огромное препятствие. Если пользователь закрывает приложение форм, то он сам виноват, если не получит оповещения об обработке данных. Но я хотел бы сделать все возможное, чтобы они не все испортили.

Итак, есть идеи?

1 Ответ

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

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

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