CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

怎么在程序中实现高效的等待?

楼主lbllbl(失败者)2003-11-03 15:46:34 在 C++ Builder / 基础类 提问

我有这样一段代码  
   
  (A)   .....  
   
  int   iTm=GetTickCount();  
  while(GetTickCount()<iTm+5000)   {};  
   
  (B)   .....  
   
  当执行完(A)后,要等待5秒左右再执行(B)。结果我这段程序等待5秒是实现了,但这段等待程序太占系统资源搞的等待其间系统中的其它程序动都动不了。  
   
  望高手指教,在C++Builder中怎样才能实现高效的等待。  
  问题点数:100、回复次数:9Top

1 楼sfemil(心洋)回复于 2003-11-03 15:56:57 得分 10

Sleep(5000);Top

2 楼GodBirdFlying(飞翔天堂鸟)回复于 2003-11-03 16:07:50 得分 5

你的高效等待是什么意思?   直接Sleep();不就成了吗?  
  Top

3 楼jiangchun_xn(GrayMemory)(再回头·灯火依旧·人不见·潸然泪下)回复于 2003-11-03 16:33:07 得分 5

sleep是可以。  
   
  最好的等待是事件对象,不占用cpuTop

4 楼jiangchun_xn(GrayMemory)(再回头·灯火依旧·人不见·潸然泪下)回复于 2003-11-03 16:38:39 得分 0

use   timer   control;  
   
  Top

5 楼lbllbl(失败者)回复于 2003-11-03 16:42:54 得分 0

Sleep好象还有点问题。  
  VB不是有个DoEvent,我就想要那样的功能,这样在等待其间,我还可以窗体进行一些其它操作。Top

6 楼sprewellkobe(我为软件狂!)回复于 2003-11-03 16:45:21 得分 10

用timer就可以了  
   
  如果不嫌麻烦,可以使TEvent,其实也不麻烦  
   
  Event1->ResetEvent();   //   clear   the   event   before   launching   the   threads  
   
  for(int   i   =   0;   i   <   Counter;   i++)  
      new   TaskThread(false);   //   create   and   launch   task   threads  
  if   (Event1->WaitFor(20000)   !=   wrSignaled)  
      throw   Exception;  
  Top

7 楼lbllbl(失败者)回复于 2003-11-03 16:58:58 得分 0

sprewellkobe能不能把用Event的完整代码写出来。  
   
  (A)...   ...  
    等5000秒?????  
  (B)...   ...  
  Top

8 楼gloom(苍狗白云)回复于 2003-11-03 17:15:18 得分 35

在While中加入 Application->ProcessMessages();Top

9 楼chifengwatch(chifengwatch)回复于 2003-11-03 17:15:37 得分 35

void   Delay(DWORD   DT)  
  {  
      if   (   DT   ==   0   )   {   return   ;   }  
      long   tt   ;  
      tt   =   GetTickCount()   ;  
      while   (   GetTickCount()   -   tt   <   DT   )  
      {  
          Application->ProcessMessages();  
          if   (   (GetTickCount()   -   tt   )   <=   0   )  
          {  
              tt   =   GetTickCount();  
          }  
      }  
  }  
   
  加上Application->ProcessMessages();Top

相关问题

  • 程序等待??
  • 求教如何在程序里实现“关机” 和“ 等待”等功能!
  • 怎么实现让程序等待一定时间再向下执行
  • 如何控制鼠标的位置,通过程序实现???谢谢 等待
  • 如何实现等待一个程序运行结束后再运行下一个程序?
  • 寻求VB的高效打包程序
  • 请问在编写Java小应用程序的时候,有些功能用JavaScript实现是否可以提高效率呢?
  • Unix下的网络编程:::如何实现能处理大容量的并发请求(TCP)的服务器程序???要高效
  • 请各位高手进来讨论一下这个排列组合问题的最高效率程序实现方法。
  • 请问如何实现光驱打开后程序等待,光驱关闭后继续运行!?

关键词

  • 代码
  • gettickcount
  • processmessages
  • tt
  • dt
  • event

得分解答快速导航

  • 帖主:lbllbl
  • sfemil
  • GodBirdFlying
  • jiangchun_xn
  • sprewellkobe
  • gloom
  • chifengwatch

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo