我正在用C编写Windows(Win32)程序,该程序具有一个工作线程来处理USB硬件设备中的数据。线程处理所有工作正常,但是我现在需要添加一个计时器来处理超时功能。我不需要回调函数,仅需要启动单发计时器并能够测试天气就可以了,而无需睡觉,如下所示:
start_timout(1000); // 1 second
while (timer_is_running())
{
doing stuff while waiting...
.
.
.
}
do stuff after timer is finished...
.
.
.
这将在工作线程内运行。
我看过SetTimer(),并尝试创建一个回调函数,该函数仅设置一个全局标志,然后测试该标志,但始终未设置。我不确定这是否是因为我的线程中没有消息处理程序。
任何建议欢迎..干杯!
SetTimer要求您在窗口中捕获WM_TIMER事件,最重要的是,它不是很准确。我不建议使用它。
相反,您可以简单地创建另一个线程,让它在指定的时间段内除了Sleep()之外什么也不做(您可以在创建线程时将时间作为参数传递)。然后WaitForSingleObject(sleeper_thread, 0)
,您可以检查是否超时。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句