当前位置:  开发笔记 > 编程语言 > 正文

IDisposable接口如何工作?

如何解决《IDisposable接口如何工作?》经验,为你挑选了1个好方法。

我知道它用于释放非托管资源,但是,我很困惑何时Dispose实际调用.我知道它在using块的末尾被调用,但是当对象被垃圾收集时它是否也会被调用?



1> Reed Copsey..:

如果你正确实现了IDisposable,你还应该包含一个终结器,它将在你的对象上调用Dispose().

如果这样做,它将被GC调用.但是,尝试始终自行处理这些对象仍然是一个非常好的主意.

依赖终结器来调用Dispose的最大问题是它将发生在你无法控制的另一个线程中.在某些情况下,这可能会产生令人讨厌的后果,包括导致GC线程中发生的异常,这是不好的,以及您检查的处理字段.这也是为什么在Dispose()方法中包含GC.SuppressFinalize(this)很重要的原因 - 一旦对象被处理掉,你就不想重新处理它了.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有