Многопоточность может решить эту проблему, но для чего-то такого простого, как этот счетчик, это не нужно.
Другой пользователь рекомендовал это. Обновление (). Это работает для отображения чисел, потому что пользовательский интерфейс будет перерисовываться. Но это не учитывает тот факт, что окно не реагирует (вы не можете перемещать его).
Третье решение и моя рекомендация для этой конкретной программы - Application.DoEvents (). Что он делает, так это говорит базовому собственному окну выполнить его метод ProcessMessages в пуле сообщений. Пул сообщений содержит сообщения о событиях, отправленные ему Windows, когда необходимо перерисовать окно, переместить мышь, форма была перемещена, свернута и т. Д. Эти инструкции были отправлены Windows и поставлены в очередь. Проблема в том, что программа не будет обрабатывать их, пока пользовательский интерфейс не будет работать. Вы можете принудительно вызвать его, вызвав этот метод.
Application.DoEvents () выдаст окно, которое отвечает, как ожидается, с интервалами в 100 мс. Это может быть немного изменчиво (потоки были бы более отзывчивыми), но его очень легко вставить и часто достаточно.
for (int i = 0; i < 100; i++)
{
objTextBox.Text = i.ToString();
Application.DoEvents();
Thread.Sleep(100);
}