清理资源

时间:2010-12-07 08:05:24

标签: c# com interop

我正在尝试清理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()方法,而不是传递数组然后循环它。

请建议。

1 个答案:

答案 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);
 }