Windows原生API支持定时器吗?

4

Windows原生API支持计时器吗?

我知道在Windows上的POSIX实现支持计时器,但我对Windows SDK API感兴趣。

4个回答

10

Win32 API 中有计时器功能。

具体详情请参考:计时器

你需要特别关注以下内容:


4

1
您的消息接收器窗口不需要可见,因此它可以用于任何类型的应用程序。但如果没有窗口,您实际上无法在WinAPI中做太多事情。 - Alan

3

2
在POSIX定时器的上下文中回答这个问题有些棘手。Windows API中SetTimer会在GUI线程上创建一个依赖于其消息队列调度机制的计时器,意味着在线程的某处你需要调用GetMessage / DispatchMessage。
如果您正在编写非GUI代码,则必须实现消息循环是一种不自然的限制:Windows内核使用同步对象(而不是信号)作为工作(即非GUI)线程接收事件通知的一种方式。CreateWaitableTimer将创建一个句柄,可在工作线程中传递给WaitForSingleObject / WaitForMultipleObjects。
或者,您可以创建一个工作线程 - 在其中实现一个计时器(GUI或内核),并在计时器被触发时直接调用您的对象(显然,它必须是线程安全的)。
选择取决于您的应用程序到底有多像POSIX。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接