Задать вопрос
LittleBob
@LittleBob

Как убрать зависание WinForms во время выполнения цикла?

Простое приложение с одной кнопкой. После нажатия кнопки вызывается метод, в котором запускается цикл на неопределенный срок. И во время выполнения цикла приложением больше пользоваться нельзя, оно зависает. Но как цикл заканчивается, то всё нормально.
Как можно это исправить?
  • Вопрос задан
  • 1278 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 2
insighter
@insighter
-First time? - Huh? (C#, React, JS)
Можно ещё использовать метод Application.DoEvents. Но он больше подходит для случаев когда в нагруженном цикле идет обновление GUI (например вывод текущего статуса, выполненный прогресс) и это обновление не происходит.
while(true){
   ...
   label1.Text = $"Current progress is {progress}";
    // Processes all Windows messages currently in the message queue.
   Application.DoEvents();
}
Ответ написан
Комментировать
Ternick
@Ternick
Вам нужно использовать потоки.
Циклы, исполнение других сложных функций внутри потока gui вызывает зависание и падение программы из-за блокировки основного потока приложения, в результате чего программа не может обрабатывать другие события.
Примеры:
https://docs.microsoft.com/en-us/dotnet/api/system...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы