在计时器回调函数中使用Sleep()是否会在C ++中引起问题?

时间:2018-08-09 15:15:19

标签: c++ user-interface mfc

我有一个关于计时器和睡眠的问题。我正在使用MFC创建UI,并且为200ms的特定对话框设置了计时器。因此,每200毫秒调用一次OnTimer函数。在此函数中,我包含了函数Sleep(50)。因此,这将是代码的简化。

GROUP BY

那么此代码会引起任何潜在的问题或麻烦吗?此外,对于sleep函数,在整个OnTimer执行150ms之后或在OnTimer函数执行200ms之后将再次调用OnTimer。我之所以这样问是因为我的代码包含一个错误,并且想知道它是否可能是它的来源。预先感谢您的宝贵帮助。

1 个答案:

答案 0 :(得分:-1)

1)GUI中的sleep命令(在您情况下为对话框)会使您的界面变慢,因此请避免使用它。

2)在您的情况下,OnTimer成员函数大约每200ms的时钟滴答被调用一次。但是,如果函数OnTimer()的执行时间超过200毫秒,则将在较早的调用完成后立即再次调用timer,这将导致错误的计时。

3)OnTimer()不能用于对时间要求严格的工作,请改用std :: chrono :: high_resolution_clock。