Я работаю в Visual Studio с C++, Windows Form App. Я пытаюсь нарисовать красную кнопку, подождать 3 секунды, а затем нарисовать ее синим цветом.Функция C++ Сон() выполняется перед фрагментом кода
button1->BackColor = System::Drawing::Color::DarkRed;
Sleep(3000);
button1->BackColor = System::Drawing::Color::CornflowerBlue;
Однако функции Sleep() выполняются перед первой строкой (красная краска). Программа начинается с ожидания 3 секунды, а после времени она окрашивает кнопку синего цвета. Кажется, что краска красной части кода не успевает исполнить. Индивидуально, краска красная прекрасно работает. Я также пробовал другие решения задержки. Пример:
int wait = clock() + 2 * CLOCKS_PER_SEC;
while (clock() < wait) {}
Это, как представляется, проблема в Visual Studio C++, так как функция Sleep() работал отлично в Code :: Blocks консольный скрипт. Есть ли у вас идеи решения?
Я предполагаю, что вы помещаете основной поток в сон, поэтому у него нет времени обновлять цвет фона до красного. –
Функция сна останавливает выполнение программы в течение определенного периода времени. В вашем случае это происходит до вызова розыгрыша. Вам нужно использовать функцию обновления, которая запускается после каждого вызова ничьей. – Striker
. Кнопка должна быть принудительно перерисована сама по себе - она не делает это по причинам производительности по умолчанию, а вызов 'Sleep()' приостанавливает поток до этого случается. Если вы используете .NET - вы этого не сделали, попробуйте добавить 'button1-> Refresh()' перед вызовом 'Sleep()'. – Peter