.NET WindowService, AppDomain.CurrentDomain.DomainUnload не вызывается при остановке службы - PullRequest
1 голос
/ 03 июня 2011

У меня есть .NET Window Service, который расширяет пользовательский базовый класс, он служит базой для многих Windows-сервисов, которые я написал до сих пор, теперь я хочу добавить несколько мониторов (hearbeat) в этот базовый класс, в инициализированный из базового класса я запускаю поток, который будет уведомлять базу данных и спать в течение 40 секунд, это не идеально, но до сих пор служит своей цели . Я зарегистрировал событие для AppDomain.CurrentDomain. DomainUnload , чтобы остановить потоки пульса, но когда я прекращаю службу Windows, обновления моей базы данных останавливаются, но журналы, которые я помещаю в событие, зарегистрированное в AppDomain.CurrentDomain. DomainUnload не отображаются в средстве просмотра событий, поэтому у меня нет четкого указания, запускается ли событие или нет.

Я не могу поместить свою инициализацию пульса в OnStart / OnStop моих базовых классов, поскольку потребуется перекомпилировать все мои службы Windows, чтобы все они вызывали base.OnStart / base.OnStop.

Любая идея, почему AppDomain.CurrentDomain. DomainUnload не запускается

пс.

Я также пытался использовать AppDomain.CurrentDomain. ProcessExit с тем же результатом, что и выше, без регистрации в EventViewer.

1 Ответ

4 голосов
/ 03 июня 2011

Является ли CurrentDomain доменом приложения по умолчанию?Я бы догадался об этом, если только вы не создадите пользовательские домены.Если это так, то обратите внимание, что DomainUnload не поднимается для домена по умолчанию .

Что касается ProcessExit, я не уверен, но обратите внимание, что время жизни службы Windows не обязательно связанок времени жизни процесса, в котором он находится.Если в процессе размещено более одной службы Windows, он завершится только после остановки всех служб.

...