作为一个例子:
using (Brushes.Black)
{
...
}
静态资源不是一个好主意,因为它是静态的。 下次您的应用程序使用Brushes.Black时,您会遇到问题,因为它已被处理。
现在,如果您只使用Brushes.Black,则可能可以不处理它,因为您只留下了一个未管理的资源(希望如此!)。
但是,一般来说,您应该避免使用大量静态IDisposable,或者我忽略了什么?
using (Brushes.Black)
{
...
}
静态资源不是一个好主意,因为它是静态的。 下次您的应用程序使用Brushes.Black时,您会遇到问题,因为它已被处理。
现在,如果您只使用Brushes.Black,则可能可以不处理它,因为您只留下了一个未管理的资源(希望如此!)。
但是,一般来说,您应该避免使用大量静态IDisposable,或者我忽略了什么?
通常只需使用它们,让框架类负责处理它们的释放。
它们存在的目的是让您无需每次创建和释放它们即可使用。每个对象在首次使用时创建,并缓存到哈希表中。应用程序关闭时,框架类负责适当地释放它们。
实际上并没有那么多静态IDisposable对象需要您担心。如果您要使用大量画刷,则可能会在循环中从颜色创建它们(然后您当然要负责释放它们)。
public static Brush Black
{
get
{
Brush brush = (Brush) SafeNativeMethods.Gdip.ThreadData[BlackKey];
if (brush == null)
{
brush = new SolidBrush(Color.Black);
SafeNativeMethods.Gdip.ThreadData[BlackKey] = brush;
}
return brush;
}
}