События загружаются и запускаются в основном потоке, и если первое событие в основном потоке не завершено, вы переходите ко второму событию, как и другие программы в основном потоке, ждёте, пока предыдущая завершит обработку, прежде чем обрабатывать следующую или другую программу или событие в основном потоке.
Вышеописанное так: я сам инкапсулировал объект, а в этом объекте — событие.
Я обрабатываю данные методом подписки на события, например, в части аннотации изображения,
Потому что событие, на которое я подписался, было читать txt, а мой txt-файл содержал 50 000 строк, из-за чего метод события запускался 50 000 раз.
Затем, когда я запустил программу, я обнаружил, что мой интерфейс находится в состоянии приостановленной анимации, и понял, что тут должна быть проблема.
Сначала я думал, что именно манипуляции с управлением интерфейсом вызывают фальшивую смерть.
Затем шаг за шагом выяснилось, что при добавлении данных в набор он уже вошёл в состояние приостановленной анимации.
Почему??? Наконец, я узнал из интернета, что событие находится в главной теме, и если первое событие не будет обработано, оно заблокирует выполнение следующего события,
В целом я понимал, что заказывал, говоря прямо: 50 000 событий привели к блокировке программы, а затем я впал в состояние приостановленной анимации.
Решение:
Для некоторых простых событий, которые не приведут к выполнению большого числа методов событий, могут быть записаны напрямую в метод события.
Для большого количества вызываемых методов событий надеюсь, что вы откроете поток для их обработки, например: socket или httplistener и т.д. (объём данных небольшой, и вы их не видите, когда объём данных станет большим, ха-ха, он сразу умирает)
|