Это всегда одно и то же ...
Если вы хотите запустить что-то, что занимает некоторое время, не делайте этого в вашем потоке GUI, иначе ваш GUI зависнет (без обновлений метки, без изменения размера, без перемещения, без каких-либо действий).
Заполнение вашего кода на тысячи мест с помощью Application.DoEvents () также является плохой практикой.
Если у вас есть какое-то долго выполняемое задание (long означает> 1 сек), вам, вероятно, следует использовать BackgroundWorker . Может быть, это немного сложнее в начале, но вам понравится, если ваша программа станет более сложной. В связи с тем, что это уже обсуждалось несколько раз, здесь есть ссылка с некоторым примером кода .
Теперь, когда вы знаете правильный инструмент (BackgroundWorker) для решения вашей проблемы, вы должны заставить его работать (или задать другой вопрос о вашей новой конкретной проблеме).