событие wxwidgets в определенное время

#c #wxwidgets

#c #wxwidgets

Вопрос:

Мне нужно проверить системное время, и если время правильное (я думаю, что правильное время прошло в течение некоторого интервала назад, было бы более правильным), выполните определенные действия, используя wxwidgets. Я не нашел определенного класса или события, которые могут обрабатывать такие условия (я знаю, что есть виджет wxTimer, но это таймер — он отсчитывает время с какого-то момента, но не проверяет его) Есть ли лучший способ, чем иметь поток, который просто запускает while(true) цикл проверки системного времени?

Ответ №1:

Похоже, что класс wxTimer генерирует событие по истечении его продолжительности:
Документация wxTimerEvent.

Ответ №2:

Для этого я бы использовал таймер крайнего срока boost :: asio.

 void handler(boost::system::error_code ec) { ... }
...
io_service i;
...
deadline_timer t(i);
t.expires_from_now(boost::posix_time::seconds(400));
t.async_wait(handler);
...
i.run();
  

http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/overview/timers.html

Ответ №3:

Вы можете использовать wxTimer для выполнения действия в какой-то момент в будущем, просто запустите его с интервалом, равным разнице между этой точкой и сейчас ( wxDateTime может помочь вам в этом).