【发布时间】:2012-09-18 16:11:10
【问题描述】:
我的班级中有一个dynamic 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?
}
【问题讨论】:
-
是的,GC 会清理它。它没有实现 IDisposable 所以没有什么可以处理的。
-
在谷歌搜索
is Activator.CreateInstance managed or unmanaged... 后到达这里,因为 Dispose。
标签: c# c#-4.0 com idisposable