c# – 动态COM对象是否被视为托管资源?
发布时间:2020-12-15 08:02:51 所属栏目:百科 来源:网络整理
导读:我有一个动态COM对象作为我班级中的私有字段.我不确定它是否被视为托管资源(GC清理它). private dynamic _comConnector = null; … _comConnector = Activator.CreateInstance(Type.GetTypeFromProgID("SomeProgId")); 在实现IDispose时,我应该将其清理为托
我有一个动态COM对象作为我班级中的私有字段.我不确定它是否被视为托管资源(GC清理它).
private dynamic _comConnector = null; … _comConnector = Activator.CreateInstance(Type.GetTypeFromProgID("SomeProgId")); 在实现IDispose时,我应该将其清理为托管资源(仅在显式调用Dispose()时),还是作为本机资源(从终结器调用Dispose(false)时)? private void Dispose(bool disposing) { if (disposing) { // Free managed resources // // --> Should I call Marshal.FinalReleaseComObject(_comConnector) here? } // Free unmanaged resources // // --> Or maybe here? } 解决方法
它是一个托管资源(基本上是一个Runtime Callable Wrapper),你应该这样清理它.
MSDN states that:
即RCW是一个托管非托管COM引用的托管资源. 另外,如果您在应用程序的多个位置使用多个线程,则释放COM对象可能会很危险,如this blog post from Chris Brumme中所述. 如果您以作用域,单线程方式使用COM对象,则可以在完成后对该对象安全地调用ReleaseComObject:希望这是您的情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – IIS 8.5上的ASP.NET MVC 5网页总是处于空闲状态
- react-native定义一个类,并使其中的函数被外部调用的写法(
- ruby-on-rails – 如何覆盖rails中的路径路径助手?
- Flash Builder4.5的破解
- ruby-on-rails – Rails 4 Devise 3.0.0添加用户名
- 自动获取和创建XML文件的表列到DataGridView显示和编辑
- 如何使用xml数据进行矢量化?
- Cocos2d-x 2.x android 集成admob广告(三)banner+inters
- oracle之Flash Recovery Area全面介绍
- c – 是否可以为std :: string和std :: wstring编写一个函数