.net MMC管理单元中接收WMI事件的COM异常
我正在尝试创建一个MMC管理单元,该管理单元将接收并显示从我的服务触发的日志事件。我已经创建了watcher,它可以正确启动,但是当我尝试将节点添加到MmcListView时,我得到了一个COMException,它表示无法使用与其底层RCW分离的COM对象 以下是相关代码:.net MMC管理单元中接收WMI事件的COM异常,.net,com,mmc,mmc3,.net,Com,Mmc,Mmc3,我正在尝试创建一个MMC管理单元,该管理单元将接收并显示从我的服务触发的日志事件。我已经创建了watcher,它可以正确启动,但是当我尝试将节点添加到MmcListView时,我得到了一个COMException,它表示无法使用与其底层RCW分离的COM对象 以下是相关代码: private void LogEvent_EventArrived(object sender, EventArrivedEventArgs e) { LogEvent logEvent = new LogEve
private void LogEvent_EventArrived(object sender, EventArrivedEventArgs e)
{
LogEvent logEvent = new LogEvent(e.NewEvent);
if (SnapIn.InvokeRequired)
{
object[] args = new object[] { logEvent };
SnapIn.Invoke(new ManagementAction(AddEvent), args);
}
else
AddEvent(logEvent);
}
LogEvent类是一个简单的类,用于将ManagementBaseObject属性转换为易于编码的类型安全属性。AddEvent方法执行将LogEvent对象添加到MmcListView的ResultNodes列表的实际工作
我提到的异常实际上是在触发第二个事件时调用的,并且似乎发生在调用invokererequired时。我不知道这里到底发生了什么。有什么想法吗?好吧,这太愚蠢了。。。但事实是,我通过Invoke调用的方法抛出了一个异常,它并没有像调用者预期的那样冒泡,而是显示为奇怪的COM异常。一旦我清除了通过委托调用的方法中的异常,一切都正常