Можно ли ставить команды после Form.Close ()?

2

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

this.Close();
some_action(); //can I do this??

Можно ли выполнить другое действие после того, как я закрыл форму, или нить умирает, и все после этого потеряно?

  • 9
    Ну, что случилось, когда ты попробовал?
Теги:
winforms

3 ответа

3
Лучший ответ

В зависимости от того, что вы пытаетесь сделать, и контекста инструкции. Если закрываемая форма является основной формой, которой принадлежит цикл сообщений, вы не можете использовать материал, связанный с пользовательским интерфейсом (например, вы не можете отобразить другой MessageBox). Если вы не делаете это из другого окна (которое не принадлежит контуру сообщения), вы можете сделать что угодно (даже связанный с пользовательским интерфейсом), если вы не манипулируете закрытым объектом формы (вы получите ObjectDisposedException только как любой расположенный объект).

Кстати, поток не умирает в результате Close. Закрытие главного окна приводит к завершению цикла сообщения, а не к самому потоку. Например, следующая программа

static void Main() {
    Application.Run(new Form1());
    Application.Run(new Form2());
} 

отобразит Form2 после закрытия Form1 (используя только что созданный цикл сообщений). Это доказывает, что нить не мертва.

2

Если вы пытаетесь манипулировать формой или любым из них, то после вызова Close вы столкнетесь с проблемами. Однако ничего не мешает вам вызвать какой-либо другой метод - например, метод ведения журнала - после вызова Close.

1

Обработайте событие FormClosing и выполните дополнительные действия в обработчике событий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню