1

这些天,我有一个简单的 C# 项目,通过 fortify 扫描报告存在安全风险。该项目基于 .NET Windows 窗体应用程序。这种风险的名称是Unreleased Resource: Unmanaged Object(unmanaged_object)

例如,如果我想通过将工具箱上的控制器图形拖放到表单设计中来构造标签控制器。然后修改字体大小会Form1.Designer自动更改代码。例如,它将生成以下代码:

this.label1.font = new System.Drawing.Font(...)

关键是我们通过构造函数声明了一个 Font 对象System.Drawing.Font(...)。但是我们不处置这个对象?那么,我们该如何规避这种风险呢?

ps,如果我们在文件中更改由visual studio生成的区域的代码Form1.Designer。然后我们甚至不能再编辑表单了~(因为控制器的任何设置(例如改变foreColor底部的属性)都会改变这部分文件中的代码)。

此外,我们不希望在初始化方法中创建每个控制器。有没有人有解决这个问题的好方法?非常感谢!!

4

1 回答 1

0

您可以致电:

 this.label1.font.Dispose();

明确地在表单的 FormClosed 事件中。您必须为您在表单中创建的每个 Font 对象执行此操作。

虽然不是很漂亮......通常让它由 GC 完成通常更容易(除非你正在制作大量的字体对象),但 Fortify 显然在这里有关于显式处理的规则。

于 2014-02-25T07:39:46.300 回答