我正在尝试清理C#代码中的资源。
代码如下:
finally
{
object[] myarray = new object[5] { globalRelation, asset, surfaceRelationNew, termStructureSlice, equipRelation };
CleanupResource(myarray);
}
private void CleanupResource(params object[] objs)
{
for (int count = 0; count < objs.Length; count++)
{
if (objs[count] != null)
{
Marshal.ReleaseComObject(objs[count]);
}
}
}这是一种好的方法吗?或者我应该为每个对象调用CleanupResource()方法,而不是传递一个数组,然后遍历它。
请提个建议。
发布于 2010-12-07 16:12:18
这些是否是非托管资源?
globalRelation, asset, surfaceRelationNew, termStructureSlice, equipRelation如果没有,则无需担心让CLR handel执行此操作
如果这个非托管资源比我认为ypu做得正确,那么你为什么要调用seperate方法,只需在finally块中释放
或
你可以编写类析构函数,如果你的类的对象是GCed的时候释放它,就像下面这样。
~MyClass()
{
Marshal.ReleaseComObject(globalRelation);
Marshal.ReleaseComObject(asset);
Marshal.ReleaseComObject(surfaceRelationNew);
Marshal.ReleaseComObject(termStructureSlice);
Marshal.ReleaseComObject(equipRelation);
}https://stackoverflow.com/questions/4374499
复制相似问题