加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 05:38:01 所属栏目:Windows 来源:网络整理
导读:我正在使用一个主循环看起来像这样的服务: while (fServer.ServerState = ssStarted) and (Self.Terminated = false) dobegin Self.ServiceThread.ProcessRequests(false); ProcessFiles; Sleep(3000); end; ProcessRequests与Application.ProcessMessages
我正在使用一个主循环看起来像这样的服务:

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读