Я не понимаю, что такое удаление. Я пытаюсь заставить мой код правильно распределять ресурсы. Итак, я настроил свои классы как IDisposable (с помощью метода Dispose), чтобы убедиться, что метод Dispose вызывается.
Но теперь FXCop сообщает мне много вещей о Disposing = false и вызове Dispose (false).
Я не вижу метода Dispose, который принимает логическое значение. Мне нужно сделать один? Если да, то почему? Почему бы просто не иметь метод, который вызывается при удалении?
Я видел здесь код: http://msdn.microsoft.com/en-us/library/ms244737.aspx , где показано, как создать метод Disposing, который принимает логическое значение. В нем говорится, что это для собственных и управляемых ресурсов. Но я думал, что весь смысл утилизации касается только неуправляемых ресурсов.
Кроме того, FXCop жалуется на следующую строку:
~OwnerDrawnPanel()
{
_font.Dispose();
}
В ней говорится:
CA1063: Microsoft.Design: Modify 'OwnerDrawnPanel . ~ OwnerDrawnPanel () ', чтобы он вызывал Dispose (false) и затем возвращал.
Но Font не имеет Dispose (bool) на нем (который я могу найти).
Зачем мне нужно Dispose (bool)? и если да, то почему у Font его нет? и поскольку его нет, почему FXCop просит меня использовать его?
Спасибо за все отличные ответы. Думаю, теперь я понимаю. Вот
Удаление «неуправляемых» ресурсов подразделяется на две категории:
Dispose (bool) используется для определения разницы между ними: