我正在尝试创建一个 MMC 管理单元,除其他外,它将接收并显示从我的服务触发的日志事件。我已经创建了观察程序并且它可以正确触发,但是当我尝试将节点添加到我的 MmcListView 时,我收到一个 COMException,上面写着“无法使用已与其底层 RCW 分离的 COM 对象”。
这是有问题的代码:
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 类是一个简单的类,它负责将 ManagmentBaseObject 属性转换为易于编码的类型安全属性。AddEvent 方法执行将 LogEvent 对象添加到 MmcListView 的 ResultNodes 列表的实际工作。
我提到的异常实际上是在被触发的 SECOND 事件上调用的,并且似乎发生在对 InvokeRequired 的调用上。我不知道这里到底发生了什么。有任何想法吗?