我很困惑处置.我正在尝试让我的代码正确处理资源.所以我一直在将我的类设置为IDisposable(使用Dispose方法),确保调用Dispose方法.
但是现在FXCop告诉我很多关于Disposing = false和调用Dispose(false)的东西.
我没有看到一个带有bool的Dispose方法.我需要制作一个吗?如果是这样,为什么?为什么不在处理时调用一个方法呢?
我在这里看到了一些代码:http://msdn.microsoft.com/en-us/library/ms244737.aspx,它展示了如何制作一个带有bool的Disposing方法.它表示它适用于本地和管理资源. 但我认为处理的全部内容仅适用于非管理资源.
此外,FXCop抱怨的路线是这样的:
~OwnerDrawnPanel()
{
_font.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
它说:
CA1063:Microsoft.Design:修改'OwnerDrawnPanel .~ OwnerDrawnPanel()',以便它调用Dispose(false)然后返回.
但是Font上没有Dispose(bool)(我能找到).
为什么我需要Dispose(bool)?如果我这样做,为什么Font没有呢?因为它没有它,为什么FXCop要求我使用它?
感谢所有的好答案.我想我现在明白了.这是
处置"非管理"资源分为两类:
Dispose(bool)用于表示两者之间的区别: