问题描述
我已经运行到同一问题作为的。也就是说,Fortify的抱怨创建字体对象,为此,新字体()
语句在designer.cs文件中生成的代码。当分析结果看我得到我需要为此做些什么,至少在某些情况下,impreesion。
这是当然的,问题仅在develper已指派他的选择字体的形式在图形设计师。我的计划是要撤消选择和调用的InitializeComponent()
后手动创建字体,然后调用的Dispose()
的字体在出售形式()
方法。既然这样,我做的创建自己的资源(并检查其是否在其他地方使用)我敢肯定它是不是共享的,可安全地允许它的处置。到这一点,我相当有信心的问题。
形式现在的Dispose()
方法创建并有一个布尔处理
参数的形式时,产生为好。什么我不确定(这是我的问题)是我能不能忽略此参数,或在调用之前,检查其是否真的还是假的 font.dispose()
。 (我不得不承认我还不了解这些生成的WinForms的Dispose逻辑)
更具体地说:生成的代码如下:
///<总结>使用
///清理的任何资源。
///< /总结>
///< PARAM NAME =处理>真要是托管资源应释放;否则为false< /参数>
保护覆盖无效的Dispose(BOOL处置)
{
如果(处置和放大器;及(成分= NULL)!)
{
components.Dispose();
}
base.Dispose(处置);
}
假设为形式的'myForm会'的字体受到影响,我想创建它使用
...
的InitializeComponent(); //这是生成到构造函数中
this.myForm.Font =新System.Drawing.Font(NiftFontName,...);
...
和会叫 this.myForm.Dispose ()
处置它。现在的问题是,凡在形式的的Dispose()
方法本应该去。
Here is a simple rule from Microsoft:
protected virtual void Dispose(bool disposing)
{
if (disposing) {
// Free any managed objects here.
}
// Free any unmanaged objects here.
}
Read this documentation for more details.
So if your font is loaded from a font file, for instance, then it is unmanaged and you should dispose it outside the if (disposing)
block.
这篇关于呼唤字体的Dispose()的Windows窗体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!