Я выполняю полный анализ кода моего проекта, и он говорит, что у него 500 проблем. Я свел его до 300 сейчас, но я борюсь с проблемой, которую я не могу найти решение.
Правило CA2000 гласит:
Если одноразовый объект не будет явно удален до того, как все ссылки на него выйдут из области видимости, объект будет удален через некоторое неопределенное время, когда сборщик мусора запустит финализатор объекта. Поскольку может произойти исключительное событие, которое помешает запуску финализатора объекта, объект должен быть явно удален.
Дополнительную информацию о правиле можно найти на странице, ссылки на которую приведены выше.
Код, на котором не выполняется правило:
internal Window(Game game, Control parent, string title, bool visible)
: base(game, parent, visible, new ScreenspaceRectangle(game, Color.Black, Vector.Zero, Vector.Zero))
{
}
И описание:
CA2000: Microsoft.Reliability: в методе «Window.Window (Game, Control, string, bool)» вызовите System.IDisposable.Dispose on object «new ScreenspaceRectangle (игра, Color.Black, Vector.Zero, Vector. Ноль) до того, как все ссылки на него выйдут за рамки.
Я понимаю, что эту проблему можно решить обычным образом, используя оператор "using" вокруг создаваемого объекта, чтобы убедиться, что он всегда правильно удаляется. Но как мне решить это в этом случае?