Событие, чтобы закрыть форму - PullRequest
1 голос
/ 21 апреля 2009

При моделировании сетевого мессенджера в c # я создал поток, который прослушивает широковещательные уведомления от удаленных хостов на LAN. Чтобы прослушать широковещательные сообщения, я вызываю функцию сна и снова возобновляю выполнение потока. Проблема в том, что когда я закрываю свою форму, этот поток продолжает работать. Есть ли какое-либо событие, которое вызывается, когда я закрываю форму?

Ответы [ 3 ]

2 голосов
/ 06 июня 2009

Если вы установите для свойства .IsBackground значение true в потоке слушателя, то оно будет закрыто, когда вы закроете приложение.

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

1 голос
/ 21 апреля 2009

Вместо функции сна ваш поток должен ждать сигнала от основного (формы) потока (с тайм-аутом, эквивалентным времени сна вашего метода сна).

При обработке события закрытия:

  1. Главный поток должен установить этот сигнал и вызвать Thread.Join
  2. Другой поток должен выйти из цикла и завершить свою работу
  3. Затем основной поток возобновляет работу по закрытию формы.
0 голосов
/ 21 апреля 2009

Как насчет Форма. Закрыто ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...