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

Вид: 24628|Відповідь: 1

[WinForm] C# task.waitall заморозить інтерфейс

[Копіювати посилання]
Опубліковано 26.06.2017 22:01:09 | | |
Сьогодні я написав програму і виявив, що інтерфейс WinForm завис і не перестає реагувати,
Однак, натискаючи на програму, немає жодного відображення, і вона перейшла в стан призупиненої анімації.


Потім, відлагодження, без винятків, у чому проблема?

Оскільки ви написали це речення у головному потоці, це змушує основний потік чекати виконання всіх завдань перед виконанням наступного коду
Я також зіткнувся з цією проблемою: відкриваючи новий дочірній потік у головному потоку, але чекаючи, поки всі дочірні потоки завершать виконання, перед запуском наступного коду основного потоку, використання методу очікування заморожує інтерфейс
Побачивши коментарі в Інтернеті, я раптом зрозумів, що написав

Він записаний у головному потоці, який чекав завершення всіх завдань, що призводить до переходу інтерфейсу в стан призупиненої анімації

Розв'язок наступний:

Обмотайте нитку зовні Thread — розв'яжіть!




Попередній:Перевірка універсальних підписів WebAPI (2)
Наступний:SMS Service Alibaba Cloud надсилає промо-SMS пакетами
Опубліковано 01.12.2022 15:02:09 |
Тепер у мене така сама проблема: підпоток зависає, коли блокується через task.waitall після запуску.
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com