我正在尝试清理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()方法,而不是传递数组然后循环它。
请建议。
答案 0 :(得分:2)
是这些非托管资源吗?
globalRelation, asset, surfaceRelationNew, termStructureSlice, equipRelation
如果没有,则无需担心让CLR handel这个
如果这个非托管资源比我说ypu正确地执行它但你为什么要调用单独的方法,只需在finally块中释放
或
你可以编写类析构函数,如果它可以在类GCed的对象下面释放它。
~MyClass()
{
Marshal.ReleaseComObject(globalRelation);
Marshal.ReleaseComObject(asset);
Marshal.ReleaseComObject(surfaceRelationNew);
Marshal.ReleaseComObject(termStructureSlice);
Marshal.ReleaseComObject(equipRelation);
}