XMLDocument类似乎是支持IDisposable的理想候选者,因为......
这将允许您在Using {...}语句中使用它,并在使用后立即进行垃圾收集。
然而它似乎不支持它。
在这种情况下,处理它的最佳方式是什么?
或者它不需要支持IDisposable - 我想你完成后可以将它的引用设置为null?
或者它的关键区别在于它不会占用外部资源,例如数据库连接或外部文件,因此不需要IDispoable“支持”?
答案 0 :(得分:5)
这将允许您在Using {...}语句中使用它,并在使用后立即进行垃圾收集。
不,使用后会立即处理,而不是垃圾收集。处置和垃圾收集不是一回事,尽管它们可能看起来很相似。 Dispose
旨在释放非托管资源,例如数据库连接,文件句柄,非托管内存等。垃圾收集回收未使用的托管内存。
在XmlDocument
的情况下,当没有对它的引用时,它就有资格进行垃圾收集,并且在需要时将回收它使用的内存。因此,您只需释放对XmlDocument
的所有引用,并等待GC完成其工作。请注意,您可以强制执行GC周期,但您可能不应该这样做:GC操作起来很昂贵,并且系统在适当的时候比您更了解。
答案 1 :(得分:3)
是的,你在那里的头上钉了一针。它使用的唯一资源是内存(可能有很多对象来表示XML文档),而且我们有一个完美的工具来管理.net中的内存。即垃圾收集器。或者这里的关键区别在于它不会占用外部资源 例如数据库连接或外部文件,因此不需要 IDispoable“支持”?