OriginalGriff
Нить.Сон приостанавливает текущую нить - это означает, что ничего не происходит до тех пор, пока период не истечет. И это включает в себя обновления для отображения элементов управления! Поскольку вы обновляете элементы управления пользовательского интерфейса, этот код выполняется в потоке пользовательского интерфейса (или вы получите исключение перекрестной потоковой передачи), Что означает, что запросы Paint на обновление фактического отображения не могут быть выполнены до тех пор, пока поток не завершит спящий режим и обработчик событий не завершится.
Вместо этого покажите первое сообщение, а затем запустите таймер, чтобы заменить его вторым.
На практике у меня был бы таймер, работающий полный рабочий день, и я использовал бы счетчик, который уменьшен в обработчике событий таймера, чтобы решить, когда заменить сообщение - это более простое решение, которое не рискует запускать несколько таймеров одновременно - они используют дефицитные ресурсы, так что это плохая идея.
bamshad1986
Мне нужно, чтобы оба сообщения были показаны на последнем экране. Я проверил цикл while с часами времени, но он не работал.
OriginalGriff
Вы должны помнить, как работает Windows: события Paint имеют очень низкий приоритет (на самом деле сообщения WM_PAINT имеют низкий приоритет, но они генерируют события Paint) и никогда не выполняются во время выполнения кода другими обработчиками событий.
Вы должны использовать таймер, чтобы ваш код был завершен, а затем установить новый текст в коде таймера.