нужно ли вызывать все открытые функции удаления элементов управления в форме окна в переопределенной функции удаления? - PullRequest
1 голос
/ 20 июля 2009

У меня есть форма окна, которая содержит много элементов управления, например, таймеры, виды сетки, источники привязки и т. Д., И все они предоставляют функцию удаления. Должен ли я вызывать их функцию утилизации в этом

        protected override void Dispose(bool disposing)
    {

        if (disposing && (components != null))
        {
            components.Dispose();
        }
        // do I have to write something here ???
        base.Dispose(disposing);
    }

также, что конкретно делает компонент.Dispose ()?

спасибо

Ответы [ 3 ]

2 голосов
/ 20 июля 2009

Как правило, когда вы добавляете элементы управления на формы с помощью панели инструментов в Visual Studio, элементы управления автоматически становятся для вас Disposed (в методе protected override void Dispose).

Единственный раз, когда вам нужно вручную расположить объекты, это когда вы вручную создаете другие одноразовые объекты, которые реализуют интерфейс IDisposable, такие как дескрипторы файлов (Stream, StreamReader ... ), Объекты GDI (Bitmap, Brush) и неуправляемые ресурсы. Освобождение объектов этого типа вручную гарантирует, что вы будете следовать хорошей практике кодирования, высвобождая созданные вами ресурсы.

0 голосов
/ 20 июля 2009

Вызов base.Dispose вызывает System.Windows.Forms.Form.Dispose, который располагает меню и другими элементами управления формой. Вызов заканчивается в System.Windows.Forms.Control.Dispose, который рекурсивно удаляет все дочерние элементы управления.

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

0 голосов
/ 20 июля 2009

Нет, форма позвонит в Dispose для вас.

Для чего нужен Dispose? Это взято отсюда IDispose

Используйте метод Dispose этого интерфейс для явного освобождения неуправляемые ресурсы в сочетании с мусорщика. потребитель объекта может назвать это метод, когда объект больше не необходимо

...