【发布时间】:2014-06-20 18:57:42
【问题描述】:
我需要检查系统时间,如果时间合适(我认为在某个时间间隔内已经过了正确的时间会更正确)使用 wxwidgets 进行某些操作。
我还没有找到可以处理这种情况的特定类或事件(我知道有 wxTimer 小部件,但它是计时器 - 它从某个时刻开始计算时间但不检查它)
有没有比只运行while(true) 循环检查系统时间的线程更好的方法?
【问题讨论】:
我需要检查系统时间,如果时间合适(我认为在某个时间间隔内已经过了正确的时间会更正确)使用 wxwidgets 进行某些操作。
我还没有找到可以处理这种情况的特定类或事件(我知道有 wxTimer 小部件,但它是计时器 - 它从某个时刻开始计算时间但不检查它)
有没有比只运行while(true) 循环检查系统时间的线程更好的方法?
【问题讨论】:
看起来像 wxTimer 类在持续时间过去后生成一个事件:
wxTimerEvent documentation。
【讨论】:
我会为此使用 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
【讨论】:
您可以使用wxTimer 在未来的某个时间点执行操作,只需以等于该点与现在之间的差值的间隔开始它(wxDateTime 可以帮助您)。
【讨论】: