2014-12-24 2 views
0

У меня есть FORTIFY вопросы на new font() строке кодаUnreleased Ресурс: неуправляемый объект

Unreleased Ресурс: Неуправляемый Объект -Fortify C#

Код:

try 
{ 
var c = new ChartArea(); 
c.AxisY.TitleFont = new Font("Arial", 10, FontStyle.Bold);// --> Fortify issue 
} 
finally 
{ 
    if (ca.AxisY.TitleFont!= null) 
     { 
     ca.AxisY.TitleFont.Dispose(); //--> does not resolve the foritfy issue 
     } 
} 

I пытались распорядиться titlefont, но это не помогает. Не могли бы вы дать мне знать, как решить эту проблему?

Fortify детали сообщение:

Функция DrawChart() в DrawController.cs не может правильно отчуждать неуправляемых системных ресурсов, выделяемых Font() на линии 134.

+0

возможный дубликат [Вызов Dispose() для шрифта в форме Windows] (http://stackoverflow.com/questions/22661480/calling- dispose-for-font-in-windows-form) – Hogan

+0

Статические анализаторы редко получают это правильно. Они просто не могут выглядеть достаточно глубоко, чтобы видеть, что шрифт не должен быть удален и что это происходит намного позже. Автоматически, когда пользователь делает просмотр диаграммы. Просто подавите предупреждение. –

ответ

0

Проблема заключается в том если действие присвоения нового шрифта в .TitleFont вызывает исключение. В этом случае .TitleFont может по-прежнему иметь значение null, но объект Font был бы выделен, и вы не сохранили его.

Немного больше типирование, вероятно, решить эту проблему:

var c = null; 
Font arial10bold = null; 
try 
{ 
c = new ChartArea(); 
arial10bold = new Font("Arial", 10, FontStyle.Bold); 
c.AxisY.TitleFont = arial10bold; 
} 
finally 
{ 
    if (arial10bold != null) { 
     arial10bold.Dispose; 
    } 
}