Трабл с SystemEvent.SessionSwitch и ApplicationContext
От: Darth Bender Россия htttp://sketch-in-dot-net.spaces.live.com
Дата: 09.04.08 14:28
Оценка:
Вот какая штука приключилась.

Есть у меня приложение, главная задача висеть в трее и реагировать на Lock\Unlock и Logoff.
Архитектура в целом такая (дальше объясню отчего это важно):
Есть некоторый класс (фактически контроллер или презентор приложения), он наследуется только от ApplicationContext и подаётся на вход Application.Run().
Далее в нем я подписываюсь на системные события SystemEvents.SessionSwich и SystemEvents.SessionEnding. Фактически большую часть времени приложение не имеет никакого окна, есть только иконка трея.
И все вроде бы работает шоколадно. Но не долго. Через 2-3 дня, приложение перестаёт перехватывать lock системы.

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

Оттого вопрос. Надо ли, что-то хитрое реализовывать в классе, который наследуется от ApplicationContext?
Или неперехват локов системы происходит по каким-то другим причинам?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.