我最近遇到了CodeProject上的VerticalLabel控件.
我注意到OnPaint方法创建但不处理Pen和SolidBrush对象.
这是否重要,如果是这样,我怎样才能证明它可能导致的任何问题?
编辑
这不是关于IDisposable模式的一般问题.我知道调用者通常应该在任何实现IDisposable的类上调用Dispose.
我想知道的是,当GDI +对象没有按照上面的例子那样处理时,可以预期会出现什么问题(如果有的话).很明显,在链接的示例中,在垃圾收集器启动之前可能会多次调用OnPaint,因此可能会耗尽句柄.
但是我怀疑GDI +在某些情况下内部重用句柄(例如,如果你使用Pens类中特定颜色的笔,它会被缓存并重用).
我想要了解的是,链接示例中的代码是否能够在忽略调用Dispose的情况下逃脱.
如果没有,看一个样本,证明它可能导致什么问题.
我应该补充一点,我经常(包括MSDN上的OnPaint文档)看到WinForms代码示例未能处理GDI +对象.