Process.Exited event
От: server_mouse Беларусь about:blank
Дата: 13.10.09 13:58
Оценка:
Привет всем,
Разыскиваю возможность узнать о том, что текущий процесс закрывается. Цель: более корректное освобождение некоторых ресурсов. Код находиться в сборке, подгружаемой в некоторый процесс динамически через COM (IE plug-in).
Пробовал
Process.GetCurrentProcess().Exited += new EventHandler(CurrentProcess_Exited);

Не работает, что в принципе и ожидаемо — событие предназначено для слежения за чужими процессами.

Какие ещё есть варианты глобальных эвентов?
Повреждение мозга после ректальной биопсии — редкая штука (с) Хаус
process exited event global
Re: Process.Exited event
От: G0ga  
Дата: 13.10.09 14:05
Оценка:
Здравствуйте, server_mouse, Вы писали:

_>Привет всем,

_>Разыскиваю возможность узнать о том, что текущий процесс закрывается. Цель: более корректное освобождение некоторых ресурсов. Код находиться в сборке, подгружаемой в некоторый процесс динамически через COM (IE plug-in).
_>Пробовал
_>
_>Process.GetCurrentProcess().Exited += new EventHandler(CurrentProcess_Exited);
_>

_>Не работает, что в принципе и ожидаемо — событие предназначено для слежения за чужими процессами.

_>Какие ещё есть варианты глобальных эвентов?


Несколько не понятно, кто за кем и кого в конце "прибить"?
Re[2]: Process.Exited event
От: server_mouse Беларусь about:blank
Дата: 13.10.09 14:42
Оценка:
Здравствуйте, G0ga, Вы писали:

G>Несколько не понятно, кто за кем и кого в конце "прибить"?

Если подробнее, то IE7-8 запускают отдельные закладки в отдельных процессах. Наш плагин должен использовать общие ресурсы. Достигается это тем, что первый стартанувший обявляет себя RemotingService, а остальные соотв. клиентами. Поскольку жизненный цикл процесса остаётся на совести IE, значит верить здесь нельзя ни во что — процесс может прибиться в любую секунду. Остаётся открытым вопрос корректного закрытия использованых Mutex, каналов связи для Remoting и подключённых RemoteEventHandlers. Есть подозрения, что всё может дурно закончится, поскольку OnQuit у окна-плагина не вызывается никогда.
Повреждение мозга после ректальной биопсии — редкая штука (с) Хаус
Re: Process.Exited event
От: gecko  
Дата: 13.10.09 15:59
Оценка:
Здравствуйте, server_mouse, Вы писали:

_>Какие ещё есть варианты глобальных эвентов?


AppDomain.ProcessExit
Re[3]: Process.Exited event
От: x64 Россия  
Дата: 14.10.09 09:02
Оценка:
_>Если подробнее, то IE7-8 запускают отдельные закладки в отдельных процессах. Наш плагин должен использовать общие ресурсы. Достигается это тем, что первый стартанувший обявляет себя RemotingService, а остальные соотв. клиентами. Поскольку жизненный цикл процесса остаётся на совести IE, значит верить здесь нельзя ни во что — процесс может прибиться в любую секунду. Остаётся открытым вопрос корректного закрытия использованых Mutex, каналов связи для Remoting и подключённых RemoteEventHandlers. Есть подозрения, что всё может дурно закончится, поскольку OnQuit у окна-плагина не вызывается никогда.

Вообще-то, получить уведомление об уничтожении любого процесса в любом случае документировано можно только в драйвере, в приложении ты никогда не сможешь узнать о том, что его сейчас кто-то убивает и уж тем более не успеешь ничего сделать перед этим. Ну это к тому, что если реально надо, то дорога к написанию драйвера и всем связанным с этим проблемам. Но действительно ли оно нужно? К слову сказать, объекты синхронизации типа мутексы (как и любые другие объекты ядра) автоматически и корректно уничтожаются в момент закрытия последнего хендла. Т.е. если каждый из "твоих" процессов держит хендл на мутекс, то вообще-то ничего страшного, — мутекс будет автоматически уничтожен при убийстве последнего "твоего" процесса. Полагаю, что с RemoteEventHandlers примерно такая же штука, потому что в итоге всё базируется на примитивах ядра...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.