проблемы с асинхронным вызовом WMI

если я использую абсолютную настройку по умолчанию для асинхронного запроса WMI:

mgtEvWatcher = new ManagementEventWatcher("SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'"); 
mgtEvWatcher.EventArrived += new EventArrivedEventHandler(mgtEvWatcher_EventArrived); 

этого достаточно, чтобы запустить асинхронный запрос WMI? я хочу зафиксировать событие создания процесса. нет ни ошибок, ни исключений, но всякий раз, когда я открываю приложение (пробовал с cmd->calc и еще несколько, я не могу вспомнить) ничего не происходит


person Bruno Figares    schedule 09.07.2011    source источник


Ответы (1)


Вы вызываете метод ManagementEventWatcher.Start? чтобы подписаться на событие

Кроме того, если вы хотите отслеживать создание процесса, вы должны вместо этого использовать класс __InstanceCreationEvent wmi.

попробуйте этот код

mgtEvWatcher = new ManagementEventWatcher("SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'"); 
mgtEvWatcher.EventArrived += new EventArrivedEventHandler(mgtEvWatcher_EventArrived); 
mgtEvWatcher.Start();
person RRUZ    schedule 09.07.2011
comment
работал! событие продолжает срабатывать без остановки, как я могу заставить его прекратить срабатывать? большое спасибо!!! :D - person Bruno Figares; 09.07.2011
comment
Просто вызовите метод Stop, msdn.microsoft.com/ ru/библиотека/ - person RRUZ; 09.07.2011
comment
Спасибо еще раз! Я попробовал метод Stop, и он частично сработал, мне также пришлось установить тайм-аут после прихода события. Просто пишу это на случай, если кто-то столкнется с той же проблемой. - person Bruno Figares; 09.07.2011