Как Вы делаете сон программы в C++ на Победе 32?

Как каждый "приостанавливает" программу в C++ на Победе 32, и какие библиотеки должны быть включены?

17
задан T.E.D. 12 February 2010 в 15:28
поделиться

5 ответов

#include <windows.h>

Sleep(number of milliseconds);

Или если вы хотите приостановить выполнение программы в ожидании другой программы, используйте WaitForSingleObject.

28
ответ дан 30 November 2019 в 11:17
поделиться

Если вы хотите, чтобы программа оставалась отзывчивой во время паузы, вам нужно использовать событие таймера.

1
ответ дан 30 November 2019 в 11:17
поделиться

Если вы используете ускорение, вы можете использовать функцию thread :: sleep :

#include <boost/thread/thread.hpp>
boost::system_time time = boost::get_system_time();
time += boost::posix_time::seconds(1);
boost::thread::sleep(time); 

В противном случае у вас будет использовать win32 api:

#include <windows.h>
Sleep(1000);

И, очевидно, C ++ 0x включает это:

#include <thread>
std::this_thread::sleep_for(chrono::seconds(1));
8
ответ дан 30 November 2019 в 11:17
поделиться

Это зависит от типа программы, которую вы пишете.

Консольное приложение может просто вызвать спящий режим. Приложение с графическим интерфейсом, вероятно, не этого хочет, поскольку все меню и виджеты станут нечувствительными, и приложение не будет перерисовывать себя в течение этого периода. Вместо этого вам нужно сделать что-то вроде установки таймера с обратным вызовом, когда он истечет.

0
ответ дан 30 November 2019 в 11:17
поделиться

Не используйте функцию сна в вашем графическом интерфейсе, если она не предоставляется фреймворком, с которым вы работаете. Это может создать проблемы со ссылками на данные (особенно в потоке, который не является основным потоком). Это может заморозить ваш графический интерфейс. Дело не только в том, чтобы спать на короткое время, используйте waitmutexes, если вам нужно это сделать.

0
ответ дан 30 November 2019 в 11:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: