2014-02-25 2 views
1

В наши дни у меня есть простой проект C#, который имеет угрозу безопасности по отчету сканирования через fortify. Этот проект основан на приложении формы .NET Windows. Название этого риска: Unreleased Resource: Unmanaged Object(unmanaged_object).Как решить риск Неизданный ресурс: неуправляемый объект (неуправляемый_объект) через fortify

Например, если я хочу построить контроллер метки, сбросив контрольные цифры на панели инструментов в дизайн формы. Затем измените размер шрифта, который автоматически изменит код в Form1.Designer. Так, например, было бы генерирует следующий код:

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

Ключ мы объявить объект Font через конструктор System.Drawing.Font(...). Но мы не распоряжаемся этим объектом? Итак, как нам избежать этого риска?

p.s., если мы изменим код в области, которая создается визуальной студией в файле Form1.Designer. Тогда мы даже больше не можем редактировать форму ~. Поскольку любая настройка контроллеров (например, изменение свойства foreColor дна) изменит код в этой части файла).

Кроме того, мы не хотим создавать каждый контроллер в методе инициализации. У кого-нибудь есть хороший способ решить эту проблему? Большое спасибо!!

ответ

0

Вы могли бы назвать:

this.label1.font.Dispose(); 

Явно в FormClosed случае вашей формы. Вам нужно будет сделать это для каждого объекта Font, который вы создали в форме.

Не очень красиво, хотя ... Обычно проще просто допустить, чтобы это было завершено GC (если вы не делаете LOTS объектов шрифта), но у Fortify явно есть правила о прямом удалении здесь.