2012-08-28 41 views
0

我在導入(引用)到另一個項目中的C#庫中使用了ManagementEventWatcher。 我的問題是,在我的情況下,ManagementEventWatcher必須在我的應用程序關閉之前「停止」和「處置」。 我只允許修改庫而不是實現庫的應用程序。在庫(DLL)中配置ManagementEventWatcher

我已經試過如下:

public class MyClass:IDisposable ... 

然後

public void Dispose() 
     { 
      _wmiWatcherRemoved.Stop(); 
      _wmiWatcherRemoved.Dispose(); 
     } 

但處置將永遠不會被執行。 所以應用程序出現以下情況例外:

COM object that has been separated from its underlying RCW can not be used 

任何想法? 感謝您的努力。

回答

0

我從你的問題的措辭中假設,使用你的庫的應用程序遇到你描述的異常,因爲他們正在關閉?

如果出現這種情況,您可以嘗試註冊AppDomain ProcessExit事件的處理程序,在該事件中可能會導致在觀察程序實例上調用Stop()Dispose()