在 Windows 窗体中调用 Font 的 dispose()

2023-12-19

我遇到了与中描述的相同的问题这个问题 https://stackoverflow.com/questions/21769908/how-and-when-is-font-disposed-for-winforms-controls。也就是说,Fortify 抱怨字体对象的创建,为此new Font()语句是在 Designer.cs 文件中生成的代码。当查看分析结果时,我确实觉得我需要对此采取一些措施,至少在某些情况下是这样。

当然,只有当开发人员已将他选择的字体分配给图形设计器中的表单时,这才是一个问题。我的计划是撤消该选择并在调用后手动创建字体InitializeComponent()然后打电话dispose()对于字体dispose()形式的方法。因为这样我自己创建了资源(并检查了它是否在其他地方使用),我确信它不会被共享,并且可以安全地允许它被处置。到目前为止,我对这个问题还是比较有信心的。

Now the dispose()表单的方法在创建表单时也会生成,并且有一个布尔值disposing范围。我不确定(这是我的问题)是我是否可以忽略这个参数,或者必须在调用之前检查它的真假font.dispose()。 (我必须承认我还不理解这些生成的 winform 中的处理逻辑)。

更具体地说:生成的代码如下所示:

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

假设“myForm”表单的字体受到影响,我将使用以下命令创建它

... 
InitializeComponent(); // this is generated into the constructor
this.myForm.Font = new System.Drawing.Font("NiftFontName",...);
...

并会打电话this.myForm.Dispose()处理它。问题是,表格中的什么地方dispose()方法这应该去。


问题是,它应该放在表单的 dispose() 方法中的哪个位置。

这是微软的一个简单规则:

protected virtual void Dispose(bool disposing)
{
   if (disposing) {
      // Free any managed objects here. 
   }

   // Free any unmanaged objects here. 
}

Read 本文档 http://msdn.microsoft.com/en-us/library/fs2xkftw%28v=vs.110%29.aspx更多细节。

因此,例如,如果您的字体是从字体文件加载的,那么它是非托管的,您应该将其丢弃在if (disposing) block.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 窗体中调用 Font 的 dispose() 的相关文章

  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • Rx.NET 中是否有一个Subject 实现,其功能类似于BehaviourSubject,但仅在值发生更改时才发出?

    有没有Subject https learn microsoft com en us previous versions dotnet reactive extensions hh229699 v vs 103 Rx NET 中的实现在功能
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 如何使用 asp.net http 客户端使用 retry-after 标头来轮询 API

    我对在 net 中使用 http 客户端进行 RESTful 消费不太熟悉 并且在轮询外部 API 时无法理解如何使用 retry after 标头 这是我目前必须调查的 HttpResponseMessage result null va
  • cURL 不会提示我使用 GitHub API 输入密码

    我正在跟进GitHub 的教程 https developer github com guides getting started 关于使用他们的 API 在我的 Git Bash 命令提示符中 我输入以下内容 curl i https a
  • 裁剪后,fabricjs 将裁剪的对象设置为画布的背景

    在我的fabricjs中 我正在制作画布并向其添加图像并将图像设置为背景 然后我将卡瓦斯剪裁到一定的宽度和高度 裁剪画布后 我想要一个新的画布或以裁剪区域作为背景的相同画布 全部覆盖画布的宽度和高度 或者可以使用裁剪区域的高度和宽度制作新画
  • 如何为 Android API 级别 <11 实现 CursorLoader

    我有一个包含许多列表活动 其中 5 6 个 的应用程序 并且所有活动都有来自我自己的 ContentProvider 2 的自定义游标适配器 位于 Sqlite 数据库 2 上 现在的问题是 我想实现 CursorLoader 或类似 类来
  • 将多个对象放入 HttpParams

    我在表单控件中有一些类别 我将它们发送到一个字符串数组中 如下所示 1 4 6 这是我的实际代码 let categoryIds new Array
  • 重复播种随机数生成器是合理的哈希函数吗?

    我希望生成大量随机数据 这些数据对于给定的情况是可重现的key 包含一个数字列表 a b c d e 以下是让 RNG 进入生成随机数据的状态的好方法还是明智的方法 这样对于每个 n 元组 a b c n 该数据与 相邻 n 元组的输出不相
  • TFS2008到TFS2010迁移升级

    All 我目前正在尝试创建一个可重复的过程 将 TFS 2008 安装升级到新硬件 Microsoft 称为迁移升级 但在新硬件上构建 VS 2008 项目时遇到问题 我们的 TFS 2008 安装由两台机器组成 一个包含 SQL 数据库和
  • ChartJS - 具有多个环的圆环图

    是否可以使用 ChartJS 创建具有多个环的圆环图 如下所示 您可以在以下位置找到解决方案小提琴链接 https jsfiddle net zuupzpLL var ctx document getElementById chart ar
  • 如何知道用户何时将输出从 erlang shell 重定向到文件

    我有一个示例模块 module helloworld compile export all main gt io format s s s n e 31m Hello world e 0m 当我构建时 erlc helloworld erl
  • Django 模板对象类型

    好吧 这是我的情况 我有一组通用对象 我正在 django 模板中对其进行迭代 这些对象有许多子类 我想在模板中找出我正在处理的子类 这可能吗 可取吗 该代码可能看起来类似于 其中 if 语句包含一些虚构的语法 table tr th na
  • java.awt.Frame.setBackground() 在 OS X 中不起作用

    我正在尝试解决 OS X 中 java 小程序中的一些 UI 渲染错误 但我遇到了一个我无法解决的问题 我们打开的所有扩展 java awt Frame 的窗口似乎都忽略了 setBackground 调用 而是使用 OS X 默认值 拉丝
  • 根据日期精度设置日期格式

    我正在使用维基数据查询服务来获取某些地方的人口日期 输出给出以下格式的原始结果2010 01 01T00 00 00Z 举个例子 我还检索了每个日期的日期精度 这query https query wikidata org SELECT 2
  • 你可以*仅仅*用闭包修补一个嵌套函数,还是必须重复整个外部函数?

    我们使用的第三方库包含一个相当长的函数 该函数在其中使用了嵌套函数 我们对该库的使用触发了该函数中的错误 我们非常希望解决该错误 不幸的是 库维护者的修复速度有点慢 但我们不想分叉该库 在他们解决问题之前 我们也无法暂缓发布 我们更愿意使用
  • Android Studio Java 文件未找到异常

    我尝试了我能想到的所有可能的路径组合以及文件的每个可能的位置 它根本不会停止寻找文件未找到异常 没有文件或目录 try String path D Users UserName Desktop NameofProject app src m
  • Jquery:如何睡眠或延迟?

    我想向上移动对象 延迟1000ms 然后隐藏它 我得到代码 test animate top 80px 1500 animate top 0px 1000 animate opacity 0 500 我使用 animate top 0px
  • Ionic/Cordova:如何将 Cordova 插件集成到现有的 Ionic 项目中?

    我有一个 Ionic 项目 需要 Cordova Camera 插件 我现在已成功安装 但在我的项目中 Camera API 仍然不可用 即抛出错误 ReferenceError Camera is not defined at Scope
  • Neo4j 2.0.1 graphstyle.grass 用于多个标签

    我很难为具有多个标签的节点设置属性 我的 graphstyle grass 文件如下所示 node diameter 40px color aaaaaa border color 888888 border width 1 5px text
  • 使用带有 while 循环的递归的奇怪结果

    我是 Javascript 的初学者 当我自己尝试递归时 我使用 while 循环得到了一些奇怪的结果 并且使用 If 语句得到正确的结果 这是代码和结果 var test function f n while n gt 0 documen
  • 使用 Python 在 Power BI 中自定义视觉对象

    我正在尝试为 Python 复制这个 但找不到任何答案 是否可以在Power BI的R Script Visual中使用R Plotly库 https stackoverflow com questions 39368729 is it p
  • 在 Windows 窗体中调用 Font 的 dispose()

    我遇到了与中描述的相同的问题这个问题 https stackoverflow com questions 21769908 how and when is font disposed for winforms controls 也就是说 F