为什么Graphics
需要处理?
还有Pen
和SolidBrush
?
答案 0 :(得分:3)
这些对象是非托管资源的包装器,特别是GDI +对象。如果未明确处理这些对象,则GC需要调用其终结器。这将延迟回收其他GC的资源。*这意味着您的应用程序将使用超出必要的资源。
更新:澄清上面的措辞加上...... *当GC遇到具有终结器的对象时 - 假设未在Dispose()方法中调用GC.SuppressFinalize() - 它将终结器排队,以便在将来某个时间在终结器线程上运行。因此,对象使用的内存和资源至少保持在当前运行的GC之后。
答案 1 :(得分:3)
简单的答案是,他们实施'IDisposable',因此需要处理它们。
稍长的答案是他们消耗需要释放的非托管资源。通过直接调用dispose(或使用'using'语句),您可以释放这些资源,而不是等待GC为您执行此操作。