我知道最好的做法是在任何实现 IDisposable 的对象上调用 Dispose,尤其是包装有限资源(如文件句柄、套接字、GDI 句柄等)的对象。
但是我遇到了一个情况,我有一个有字体的对象,我必须通过几层对象来探测 IDisposable,并查看很多用法,以确保我总是处理字体。我想知道它是否值得复杂。
如果 Font 包装了 HFONT,那将是一回事,因为 GDI 资源是系统全局的。但是 Font 不包装 GDI 句柄;它是 GDI+,它是一个完全独立的系统,据我所知,它是本地进程,而不是像 GDI 那样的系统全局。与 Image 不同,Font 永远不会占用文件系统资源(无论如何我都知道)。
所以我的问题是:让字体收集垃圾的真正成本是多少?
我知道我会对终结者造成一点打击,但如果“泄漏”字体的数量很少(比如六个),那么老实说,这种打击不会引起注意。除了终结器之外,这似乎与分配一个中等大小的数组并让 GC 清理它没有太大区别——它只是内存。
让字体获得 GCed 是否有我不知道的成本?