【问题标题】:COM Exception Receiving WMI Event in MMC Snapin在 MMC 管理单元中接收 WMI 事件的 COM 异常
【发布时间】: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 时。我不知道这里到底发生了什么。有什么想法吗?

【问题讨论】:

    标签: .net com mmc mmc3


    【解决方案1】:

    好的,这太愚蠢了……但事实是我通过 Invoke 调用的方法抛出了一个异常,它并没有像调用者预期的那样冒泡,而是显示为奇怪的 COM例外。在我通过委托调用的方法中清除异常后,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多