LittleBob
@LittleBob

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

Простое приложение с одной кнопкой. После нажатия кнопки вызывается метод, в котором запускается цикл на неопределенный срок. И во время выполнения цикла приложением больше пользоваться нельзя, оно зависает. Но как цикл заканчивается, то всё нормально.
Как можно это исправить?
  • Вопрос задан
  • 949 просмотров
Решения вопроса 2
Ternick
@Ternick
Вам нужно использовать потоки.
Циклы, исполнение других сложных функций внутри потока gui вызывает зависание и падение программы из-за блокировки основного потока приложения, в результате чего программа не может обрабатывать другие события.
Примеры:
https://docs.microsoft.com/en-us/dotnet/api/system...
Ответ написан
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();
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы