Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 09:23:17 |
Хтось дуже добре написав, підтримка
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com