【发布时间】:2009-11-18 18:05:08
【问题描述】:
我正在尝试创建一个 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 时。我不知道这里到底发生了什么。有什么想法吗?
【问题讨论】: