【问题标题】:problems with WMI asynchronic callWMI 异步调用的问题
【发布时间】:2011-07-09 00:54:26
【问题描述】:

如果我对 WMI 异步查询使用绝对默认设置:

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

这足以让 WMI 异步查询继续进行吗?我想捕捉进程创建的事件。 没有错误,没有例外,但是每当我打开一个应用程序(尝试使用 cmd->calc 和一些我不记得的)时,什么都没有发生

【问题讨论】:

    标签: c# windows wmi wmi-query


    【解决方案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();
    

    【讨论】:

    • 成功了!事件一直在不停地发射,我怎样才能让它停止发射?多谢!!! :D
    • 只需调用 Stop 方法,msdn.microsoft.com/en-us/library/…
    • 再次感谢!我尝试了 Stop 方法,它部分工作,我也必须在事件到达后设置超时。写这个以防万一有人遇到同样的问题。
    猜你喜欢
    • 2016-04-07
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2016-02-10
    相关资源
    最近更新 更多