首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清理资源

清理资源
EN

Stack Overflow用户
提问于 2010-12-07 16:05:24
回答 1查看 131关注 0票数 1

我正在尝试清理C#代码中的资源。

代码如下:

代码语言:javascript
复制
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()方法,而不是传递一个数组,然后遍历它。

请提个建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-07 16:12:18

这些是否是非托管资源?

代码语言:javascript
复制
globalRelation, asset, surfaceRelationNew, termStructureSlice,   equipRelation

如果没有,则无需担心让CLR handel执行此操作

如果这个非托管资源比我认为ypu做得正确,那么你为什么要调用seperate方法,只需在finally块中释放

你可以编写类析构函数,如果你的类的对象是GCed的时候释放它,就像下面这样。

代码语言:javascript
复制
~MyClass()
{
   Marshal.ReleaseComObject(globalRelation);
    Marshal.ReleaseComObject(asset);
     Marshal.ReleaseComObject(surfaceRelationNew);
     Marshal.ReleaseComObject(termStructureSlice);
     Marshal.ReleaseComObject(equipRelation);
 }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4374499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档