CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

如果只是使用Sleep()函数计时,并不希望整个程序被挂起,要怎么做?

楼主hjk_2(hjk)2002-02-01 14:38:54 在 C++ Builder / 基础类 提问

问题点数:20、回复次数:24Top

1 楼dalinsky(大林)回复于 2002-02-01 14:51:26 得分 0

Application->ProcessMessages();  
  或者,使用线程Top

2 楼redpower(常宁)回复于 2002-02-01 14:58:45 得分 0

用TTimer计时,精度一样Top

3 楼40Star(斯文、大方、有前途)回复于 2002-02-01 14:58:56 得分 0

位傻不用TimerTop

4 楼gfh21cn(葛凤华)回复于 2002-02-01 15:04:17 得分 0

用Sleep来计时是被挂起的意思,如果你不想  
  程序被挂起,你就不能用这个  
   
  Application->ProcessMessage()最常用的是  
  在循环的时候  
   
  你还是用Timer来计时吧  
   
  其实计时有很多种的  
  有的很精确  
   
  Top

5 楼gfh21cn(葛凤华)回复于 2002-02-01 15:06:16 得分 0

QueryPerformanceFreguency()  
  QueryPerformanceCounter()  
   
  可以实现精确计时  
  Top

6 楼gfh21cn(葛凤华)回复于 2002-02-01 15:12:43 得分 10

程序示例  
   
          LARGE_INTEGER   litmp;  
          LONGLONG   QPart1,QPart2;  
          double   dfminus,dffreg,dftime;  
          QueryPerformanceFreguency(&litmp);  
          dffreg=(double)litmp.quadpart;  
          QueryPerformanceCounter(&litmp);  
          QPart1=litmp.quaclpart;  
          sleep(100);  
          QueryPerformanceCounter(&litmp);  
          QPart2=litmp.quaclpart;  
          dfminus=(double)(QPart2-QPart1);  
   
           
          Top

7 楼hjk_2(hjk)回复于 2002-02-01 15:23:24 得分 0

to   :   gfh21cn(gfh)  
  你的精确计时是不是也要挂起程序?  
   
  Top

8 楼hjk_2(hjk)回复于 2002-02-01 15:28:47 得分 0

Application->ProcessMessages()-------------这个语句是什么意思?  
  Top

9 楼redpower(常宁)回复于 2002-02-01 15:32:21 得分 0

让程序有时间处理消息,实际上就是调用消息循环   Application->ProcessMessages()  
  如果没有特殊要求,比如精度要求很高,就用TTimer最好Top

10 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-02-01 17:58:24 得分 10

//   Application->ProcessMessages();就是让Windows获得系统控制权  
  然后能够响应处理其它消息,避免死机(Windows不响应)情况的发生。  
  下面的代码就象是Sleep(30000)。  
        int   BeginTimeMillis   =   GetTickCount();  
          while((GetTickCount()-BeginTimeMillis)<30000)  
          {  
                  Application->ProcessMessages();  
          }  
  Top

11 楼hjk_2(hjk)回复于 2002-02-01 18:13:38 得分 0

谢谢,我测试一下  
  要是人不用睡觉就好了,硬盘里面10多G的动画片还没有时间看Top

12 楼hjk_2(hjk)回复于 2002-02-01 19:41:19 得分 0

那   Application->ProcessMessages();   这段代码应放在哪呢?  
   
  像这样不行:  
   
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
   
  Sleep(5000);  
  Application->ProcessMessages();  
   
  }  
   
   
  Top

13 楼hjk_2(hjk)回复于 2002-02-01 19:51:59 得分 0

U   PTop

14 楼jearry_zhou2(jearry)回复于 2002-02-01 19:52:29 得分 0

用delay();吧,不过要加#include   stdlib.hTop

15 楼hjk_2(hjk)回复于 2002-02-01 20:41:26 得分 0

那   Application->ProcessMessages();   这段代码应放在哪呢?  
  Top

16 楼hjk_2(hjk)回复于 2002-02-01 21:43:40 得分 0

如果不使用Application->ProcessMessages();    
   
  用多线程又是怎么实现的?Top

17 楼fenglingdu(风陵渡)回复于 2002-02-01 23:38:29 得分 0

关注...Top

18 楼lm09(江泽民他爹)回复于 2002-02-02 08:28:32 得分 0

不知道你想实现什么,但是听起来用多线程完全可以实现,搜索一下,有相关的贴子,要不你说一下你的具体想法  
  Top

19 楼Behard(我爱天安门)回复于 2002-02-02 09:00:23 得分 0

想不懂,你要干吗?Top

20 楼xinghf(xinghf)回复于 2002-02-02 10:11:01 得分 0

新建一个线程类Top

21 楼hjk_2(hjk)回复于 2002-02-02 12:29:37 得分 0

我试过新建一个线程类,线程就是用来计时的,但我的主进程还是被锁住了   Top

22 楼firestars(烦)回复于 2002-02-02 17:58:36 得分 0

创建了新的线程来记时??是不是用的timer控件?这样的话显然是不行的,Top

23 楼hjk_2(hjk)回复于 2002-02-02 18:17:39 得分 0

我是用  
  QueryPerformanceFreguency()  
  QueryPerformanceCounter()  
  Top

24 楼waq(我要它干什么?)回复于 2002-02-11 02:57:21 得分 0

要计时也不用多线程吧,   多媒体时钟精确到一ms!Top

相关问题

  • 求VB下能精确计时到毫秒的函数或程序
  • 当我调用这个精确计时的函数时,程序就被挂起来了,能不能让计时和程序同步运行?
  • 我的程序里设置了几个计时器,但是我想分别让每个函数相应不同的计时器消息?也就是每个函数有自己的计时器,我该怎么办?
  • 如何处理Sleep()函数引起的程序死锁问题
  • SQLSERVER 有没有像SLEEP 函数 一样使程序停止。
  • 关于计时器的回调函数
  • 求教:DOS下的计时函数
  • vfp:如何让程序等待一段时间,类似vc的sleep的函数??????
  • 在VC中用Sleep()函数之后,为什么程序变得很慢??
  • 除了sleep函数,如何使程序暂时停止执行一会?

关键词

  • sleep
  • 线程
  • 多线程
  • 代码
  • application
  • 消息
  • processmessages
  • litmp
  • qpart
  • 计时

得分解答快速导航

  • 帖主:hjk_2
  • gfh21cn
  • invalid

相关链接

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

广告也精彩

反馈

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