Answers:
最值得注意的是,在使用完游标后,请务必显式释放它们。我也释放这意味着数据库访问一些枚举对象,例如IEnumRelationship你得到IRelationshipClass.GetRelationshipsForObject。
同样,当您创建许多寿命很短的COM实例(尤其是在紧密循环中)时,显式释放它们也是一个好主意。
在某些情况下,建议何时发布单个功能(行)引用。例如,如果您创建新的地理数据库版本,编辑数据,进行协调和发布,则之后尝试删除该版本的尝试可能会失败,因为可能存在未发布的行,而这些行又保留了您要删除的版本(工作区)的引用。但是,大多数情况下,这种情况很少见,您无需在日常ArcObjects开发中考虑它们。这只会使代码杂乱无章地进行清理,使其难以维护。
同样重要的是要说何时不发布.NET包装器- 切勿显式发布任何其他托管代码可能正在使用的ArcObjects的RCW。这样的一个例子-在ArcMap中时不要释放IMap。通常,请勿尝试释放未创建的ArcObjects。
我将使用ESRI.ArcGIS.ADF.ComReleaser。话虽这么说,我不能确切确定哪个弧对象使用确定性释放模式,但我主要将其附加到IServerContext对象,因为这是最关键的。
using (ComReleaser comReleaser = new ComReleaser())
{
}
这是我在2011年esri开发者峰会上获得的一些信息。
我记得的最大清单是关于单例对象的(帮助中有两个主题)。
这是来自在.NET“释放COM引用”主题中使用ArcObjects的最佳实践的链接:http : //help.arcgis.com/zh-cn/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Releasing_COM_references/0001000004tm000000/
这是地理数据库博客上的一篇关于Fourm讨论的帖子,其中确实包含对象列表:http : //blogs.esri.com/dev/blogs/geodatabase/archive/2010/05/18/what_2700_s‑up‑with ‑comreleaser_3f00_.aspx
(最后是一篇博客文章,其中包含可帮助防止网址无法正常工作的链接) http://blogs.esri.com/dev/blogs/geodatabase/archive/2008/12/18/using-the-comreleaser-to-manage .net.aspx中的“生命周期”