По сути, вы говорите о том, что ваша служба WCF в вашей службе Windows предоставляет уведомления о событиях интерфейсу пользовательского интерфейса, когда происходит что-то «интересное». К счастью, существует разработанная структура публикации-подписки. Юваль Лоуи, автор Программирование служб WCF. Подробности описаны в этой превосходной статье MSDN, а также в исходном коде доступна бесплатно на веб-сайте Лоуи.
Отличительной чертой этой структуры является то, что она отделяет издателя, например, вашу службу WCF в вашей службе Windows, от любых подписчиков, например, вашего графического интерфейса. Издатель «публикует» события, представляющие интерес для службы Pub/Sub, которая всегда доступна. С точки зрения издателя не имеет значения, есть подписчики или нет. Служба Pub/Sub заботится о маршрутизации событий всем зарегистрированным подписчикам. Таким образом, ваша служба WCF в вашей службе Windows публикует события по мере их возникновения, ваш графический интерфейс будет подписываться/отписываться от службы публикации/подписки, когда она загружается/закрывается, а служба публикации/подписки будет уведомлять ваш графический интерфейс при возникновении событий.
Я использовал эту настройку в своем проекте, и она работает очень хорошо.
EDIT: я понимаю желание иметь собственный пользовательский интерфейс, отображающий события из службы WCF, размещенной в службе Windows. Другой вариант — использовать журнал приложений, доступный из собственного средства просмотра событий Windows (eventvwr.msc). Если этот подход приемлем, взгляните на мои инструкции здесь чтобы узнать, как настроить это из службы Windows.
person
Matt Davis
schedule
18.09.2012