windows – 除非收到消息,否则有没有办法入睡?

前端之家收集整理的这篇文章主要介绍了windows – 除非收到消息,否则有没有办法入睡?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用一个主循环看起来像这样的服务:

while (fServer.ServerState = ssStarted) and (Self.Terminated = false) do
begin
  Self.ServiceThread.ProcessRequests(false);
  ProcessFiles;
  Sleep(3000);      
end;

ProcessRequests与Application.ProcessMessages非常相似.我无法传递真实,因为如果我这样做,它会阻塞,直到从Windows收到消息,并且ProcessFiles将无法运行,并且它必须不断运行. Sleep可以降低cpu使用率.

这工作正常,直到我尝试从Windows的服务管理列表关闭服务.当我点击Stop时,它会发送一条消息,并希望几乎立即得到一个响应,如果它在Sleep命令的中间,Windows会给我一个错误,该服务没有响应Stop命令.

所以我需要说的是“睡觉3000或直到你收到消息,以先到者为准”.我确定有一个API,但我不确定它是什么.有人知道吗?

解决方法

使用计时器运行ProcessFiles而不是将其入侵主应用程序循环.然后ProcessFiles将以您想要的间隔运行,并且消息将被正确处理,而不是占用100%的cpu.

猜你在找的Windows相关文章