在特定情况下,我们可以需要监听所有的EC属性修改并按自定义逻辑进行有选择性地进行响应,而不限于与特定CIM对象有关的EC属性修改。此时,我们就可以使用CIM所提供的基于事件管理器的全局EC属性监听机制。
此监听机制是以虚函数回调[C++]或事件方式[C#]实现在CimEventManager这个单例类中的。所以,此机制的使用因语言的不同而略有差异,具体如下:
在C++中,按如下步骤实现:
基于ICimEventListener接口派生一个类,并实现其中的OnElementPropertyChanged以及其他需要方法;
实例化派生的类并通过如下调用将其实例注册到事件管理器中:
CimEventManager::Get().AddListener(pMyListenerP);
在完成监听器使用后,将其注销:
CimEventManager::Get().DropListener(pMyListenerP);
在C#中,按如下步骤实现:
在监听相关的类中添加一个原型为 void OnPropertyModified (object sender, CimEventManager.OnElementPropertyArgs args) 的响应函数并实现其逻辑;
创建事件响应器,并将其挂到事件源上:
CimEventManager.OnElementPropertyChanged += new EventHandler<CimEventManager.OnElementPropertyArgs>(OnPropertyModified);
在完成事件响应器的使用后,应及时断开其与事件源的连接:
CimEventManager.OnElementPropertyChanged -= new EventHandler<CimEventManager.OnElementPropertyArgs>(OnPropertyModified);