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