Что было бы хорошим временем для моей немодальной формы, чтобы избавиться от себя? - PullRequest
0 голосов
/ 25 февраля 2012

у меня немодальная форма. Когда пользователь покончил с этим, и они Close его, форма (и связанные с ней ресурсы) больше не нужны.

Правильное программирование требует, чтобы я избавился от всего, что реализует IDisposable (т.е. я не могу дождаться запуска сборки мусора). Это включает и меня, WinForms Form.

Какое самое лучшее или действительное время для формы, чтобы вызвать Dispose для себя?

На «других» языках вы можете уничтожить форму изнутри формы сам по телефону Release:

void CloseButton(EventArgs e)
{
   this.Release();
}

Этот метод вызывает уничтожение формы после каждого экземпляра метод вернулся (и форма обработала все ожидающие сообщения).

На этом "другом" языке было бы ужасно неправильно звонить:

void CloseButton(EventArgs e)
{
   this.Free();
}

Потому что тогда я освобождаю объект, на котором запускаю метод, из-под себя; который вызывает нарушение доступа на мгновение.

i предположим, опасно некорректно звонить:

void CloseButton(EventArgs e)
{
    this.Dispose();
}

Но, может быть, безопасно позвонить:

void FormClosed(EventArgs e)
{ 
   this.Dispose();
}

Каковы рекомендации по очистке немодальной формы, когда она больше не нужна?

1 Ответ

1 голос
/ 25 февраля 2012

Оказывается, вам даже не нужно для вызова Dispose в немодальной форме.Из MSDN:

Form.Close Method

Когда форма закрыта, все ресурсы, созданные внутри объекта, закрываются и форма удаляется.Вы можете предотвратить закрытие формы во время выполнения, обработав событие Закрытие и установив свойство Cancel для CancelEventArgs , переданного в качестве параметра вашему обработчику события,Если форма, которую вы закрываете, является формой запуска вашего приложения, ваше приложение заканчивается.

Два условия, когда форма не расположена на Закрыть , - это когда:

  1. это часть приложения с интерфейсом нескольких документов (MDI), и форма не отображается
  2. вы отобразили форму, используя ShowDialog .

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

Так что, чтобы ответить на мойвопрос, «Какое было бы время для моей немодальной формы избавиться от себя?»

Ответ: Никогда

...