如果我不对笔对象调用Dispose,会发生什么?

如果我不对笔对象调用Dispose,会发生什么?,第1张

如果我不对笔对象调用Dispose,会发生什么?

Pen
会由GC在未来某个不确定的点进行收集,你是否不叫
Dispose

但是,GC不会清除笔所拥有的任何非托管资源(例如GDI
+句柄)。GC仅清除托管资源。通过调用

Pen.Dispose
,您可以确保及时清理这些非托管资源,并且不会泄漏资源。

现在,如果

Pen
拥有终结器,并且该终结器清除了非托管资源,那么当
Pen
垃圾被回收时,那些非托管资源将被清理。但是重点是:

  1. 您应该
    Dispose
    显式调用以便释放非托管资源,并且
  2. 您不必担心是否有终结器可以清除非托管资源的实现细节。

Pen
实施
IDisposable
IDisposable
用于处置非托管资源。这是.NET中的模式。

有关该主题的先前评论,请参见此答案。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5505778.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存