Windows提供了一种可等待的计时器,它可以定时触发一个定时器对象,可以定时唤醒一个等待该对象的线程。(如果不懂Windows内核对象和触发对象的概念,请参阅《Windows核心编程》)使用它就不必创建一个窗口。因为不像用户计时器那样使用大量用户界面基础设施,消耗的资源较少,而且因为可等待计时器是内核对象,所以它可以在多个线程间共享,还可以具备安全性。只是使用方法要复杂些。 你可以创建一个新的用于等待可等待即使其对象的线程,假设每两秒计时器触发一次,线程函数的代码如下: HANDLE g_hTimer; UINT ThreadProc(LPVOID pParam) { LARGE_INTEGER li; // Create an auto-reset timer. g_hTimer = CreateWaitableTimer(NULL, FALSE, NULL); // The timer will go off direct. li.QuadPart = 0; // Set the timer. SetWaitableTimer(g_hTimer, &li, 2*1000, NULL, NULL, FALSE); while(TRUE) { // When g_hTimer is triggered, WaitForSingleObject return. WaitForSingleObject(g_hTimer, INFINITE); // The work MessageBox(NULL, "计时器触发!", "提示", MB_OK); } } 要关闭计时器对象时,可以在其他线程中调用CancelWaitableTimer(g_hTimer); 对于CreateWaitableTimer和SetWaitableTimer函数参数的具体释义,可参考相关资料。
可等待的计时器
最新推荐文章于 2022-10-11 21:27:06 发布