2009-11-18 54 views
0

我試圖創建一個MMC管理單元,除其他外,將接收並顯示從我的服務觸發的日誌事件。我創建了觀察器並且它正確啓動,但是當我嘗試向我的MmcListView添加節點時,出現一個COMException,它表示「與其基礎RCW分離的COM對象無法使用」。COM異常接收MMC管理單元中的WMI事件

這裏是有問題的代碼:

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時。我不知道這裏究竟發生了什麼。有任何想法嗎?

回答

0

好的,這是非常愚蠢的......但現實是我通過Invoke調用的方法拋出了一個異常,並沒有像預期的那樣向調用者冒泡,而是顯示爲怪異COM異常。一旦我清除了我通過委託調用的方法中的異常,一切正常。