Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 21695|Ответ: 1

[Источник] .net/c# Будьте осторожны с событиями, которые ухудшают вашу программу

[Скопировать ссылку]
Опубликовано 21.09.2016 16:05:58 | | | |
События загружаются и запускаются в основном потоке, и если первое событие в основном потоке не завершено, вы переходите ко второму событию, как и другие программы в основном потоке, ждёте, пока предыдущая завершит обработку, прежде чем обрабатывать следующую или другую программу или событие в основном потоке.




Вышеописанное так: я сам инкапсулировал объект, а в этом объекте — событие.

Я обрабатываю данные методом подписки на события, например, в части аннотации изображения,

Потому что событие, на которое я подписался, было читать txt, а мой txt-файл содержал 50 000 строк, из-за чего метод события запускался 50 000 раз.

Затем, когда я запустил программу, я обнаружил, что мой интерфейс находится в состоянии приостановленной анимации, и понял, что тут должна быть проблема.

Сначала я думал, что именно манипуляции с управлением интерфейсом вызывают фальшивую смерть.

Затем шаг за шагом выяснилось, что при добавлении данных в набор он уже вошёл в состояние приостановленной анимации.

Почему??? Наконец, я узнал из интернета, что событие находится в главной теме, и если первое событие не будет обработано, оно заблокирует выполнение следующего события,

В целом я понимал, что заказывал, говоря прямо: 50 000 событий привели к блокировке программы, а затем я впал в состояние приостановленной анимации.

Решение:

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

Для большого количества вызываемых методов событий надеюсь, что вы откроете поток для их обработки, например: socket или httplistener и т.д. (объём данных небольшой, и вы их не видите, когда объём данных станет большим, ха-ха, он сразу умирает)




Предыдущий:C# массово генерирует коды адресов электронной почты
Следующий:Анализ облачных трансляционных плееров, анализ интерфейсов Thunderbolt и QQ whirlwind
Опубликовано 22.09.2016 9:23:17 |
Кто-то очень хорошо опубликовал, поддержка
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com