Я создаю программу с несколькими проектами, и некоторые проекты отправляют отчеты в основные сообщения проекта для целей ведения журнала.
Поскольку я использую сокеты Asynch, некоторые из этих сообщений возвращаются в разных потоках, поэтомукак только они попадают в основной поток, я проверяю InvokeRequired и, если true, я использую this.BeginInvoke для обработки журналирования.
Мне нужно обработать его в потоке пользовательского интерфейса, особенно в случае сервера, где я показываюпоследние зарегистрированные сообщения в ListBox, чтобы я мог следить за ходом операций во время моих тестов.
Я знаю, что иногда может случиться так, что несколько сообщений переключаются, но сейчас я могу с этим смириться.По какой-то причине, если я использую Invoke вместо BeginInvoke, сервер зависнет, если я остановлю его, пока клиенты подключены, и даже не выдаст никаких исключений.Но используя BeginInvoke, я преодолел это.
Мой вопрос касается понимания того, как работают события и BeginInvoke в случае завершения программы.Если событие находится в очереди или BeginInvoke был вызван непосредственно перед закрытием программы, будет ли оно немедленно завершено, отменяя все?или он выполнит все ожидающие действия, в моем случае зарегистрирует ожидающее сообщение, а затем выйдет?