我在我的C#库中使用了一个ManagementEventWatcher,它被导入(引用)到另一个项目中。 我遇到的问题是,在我的情况下,在我的应用程序关闭之前,必须“停止”和“处理”ManagementEventWatcher。 我只允许修改库而不是修改库的应用程序。
我尝试了以下内容:
public class MyClass:IDisposable ...
然后
public void Dispose()
{
_wmiWatcherRemoved.Stop();
_wmiWatcherRemoved.Dispose();
}
但Dispose永远不会被执行。 因此应用程序获得以下异常:
COM object that has been separated from its underlying RCW can not be used
有什么想法吗? 谢谢你的努力。
答案 0 :(得分:0)
我从你的问题的措辞中假设使用你的图书馆的应用程序在你关闭时会遇到你描述的异常?
如果是这种情况,您可以尝试为AppDomain ProcessExit事件注册一个处理程序,在该事件中,您将在观察程序实例上调用Stop()
和Dispose()
。