`
ajinn
  • 浏览: 38166 次
文章分类
社区版块
存档分类
最新评论

DELPHI有关延迟执行的问题

 
阅读更多
procedure Delay(MSecs: Longint);   
//延时函数,MSecs单位为毫秒(千分之1秒)   
var  
  FirstTickCount, Now: Longint;   
begin  
  FirstTickCount := GetTickCount();   
  repeat  
    Application.ProcessMessages;   
    Now := GetTickCount();   
  until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);   
end;   
edit1.text:=1
Delay(1000);
edit1.text:=2
经过自己加入程序的测试很糟糕!!!!系统占用资源超大!
表明这段代码不适用
下面这段代码才是最合适的Delay!
说实话Delay也并不是想象中的那么好~在Delay的时候 程序执行其他都不行的!
Delphi代码
procedure Delay(MSecs :Longint);   
var    
  Tick: DWord;   
  Event: THandle;   
begin  
  Event := CreateEvent(nil, False, False, nil);   
  try  
    Tick := GetTickCount + DWord(msecs);   
    while (msecs > 0) and (MsgWaitForMultipleObjects(1, Event, False, msecs, QS_ALLINPUT) <> WAIT_TIMEOUT) do  
    begin  
      Application.ProcessMessages;   
      msecs := Tick - GetTickcount;   
    end;   
  finally  
    CloseHandle(Event);   
  end;   
end;
________________________________________________________________________
你在Event里执行的话,不可能不死掉的,即使插入Application.ProcessMessages也会和正常的不一样,比如关闭应用程序关不掉。

一个办法是用第二个Timer,然后在第一个Timer的OnTimer事件里启动另一个Timer,然后edit1.text:=2在那里执行。
分享到:
评论

相关推荐

    delphi延时函数(相当于sleep函数)

    为了克服这个问题,Delphi提供了其他延时函数,如`TThread.Sleep()`和异步回调等方法,这些方法可以在延迟执行的同时保持界面的响应性。 1. `TThread.Sleep()`:这是Delphi中推荐的延时函数,它是由VCL(Visual ...

    Delphi延时函数

    在Delphi编程环境中,延时函数是开发人员经常使用的工具,用于在程序执行流程中插入一个暂停,使得代码在一段时间后继续执行。这样的功能在处理动画、定时任务、多线程交互等多种场景下非常有用。在Delphi中,实现...

    delphi ACM语音组件for 2010源码

    标题 "delphi ACM语音组件for 2010源码" 涉及的是使用Delphi编程语言开发的音频处理组件,特别适用于2010版本。这些组件主要利用了ACM(Audio Compression Manager)接口,这是一个Windows操作系统内置的音频编码和...

    delphi7.0 写的局域网内文件传送软件_delphi_

    - 执行文件(.exe):编译后的可执行文件,用户可以在局域网内的计算机上运行。 - 资源文件(.res):可能包含应用程序的图标和其他资源。 - 配置文件(.ini 或 .cfg):用于存储应用程序的设置或配置信息。 - ...

    Delphi的WebSocket客户端实现

    WebSocket是一种在TCP协议基础上建立的持久连接,它允许客户端和服务器之间进行低延迟、高效率的数据传输。相比于传统的HTTP请求,WebSocket在建立连接后无需反复发送请求/响应,而是通过一个持续的连接进行双向通信...

    fzTThreadTimer_delphi定时器_delphi_线程定时器_

    在Delphi编程环境中,开发人员经常需要处理定时任务,例如执行定期更新、检查或用户界面的刷新等。标题中的“fzTThreadTimer”是一个专为解决Delphi自带定时控件局限性而设计的线程定时器组件。描述中提到,Delphi...

    Delphi网页爬取.rar

    在实际应用中,网络爬虫还需要考虑反爬策略,如设置合适的延迟时间避免频繁请求,或者使用代理IP池防止被目标网站封禁。另外,为了处理动态加载的内容,可能需要使用如PhantomJS或Selenium这样的浏览器自动化工具。 ...

    delphi 精确延时 函数

    Sleep() 是 Windows API 中的一个函数,可以用来暂停当前线程的执行。它的参数以毫秒为单位指定延时时间。然而,Sleep() 并不保证精确的延时时间,因为它会根据系统负载和优先级调整。当系统繁忙时,实际延时可能会...

    海康威视2次开发delphi demo

    可能需要进行性能优化,例如调整图像处理算法、减少网络延迟等,以提高用户体验。 6. **部署与维护**: 应用程序开发完成后,需要打包成可执行文件并部署到目标系统上。同时,根据用户反馈和需求变化,持续进行...

    Delphi模式编程(完整版).pdf

    在Delphi中实现命令模式时,可以定义一个命令接口,包含执行和撤销操作的方法。客户端通过调用命令对象的方法来执行请求,而具体的执行逻辑则由实现该接口的具体命令类完成。 ##### 5. 装饰者模式(Decorator) 装饰...

    delphi ScrollBox支持滚轮

    开发者可以通过处理这些事件来响应用户的滚动操作,例如更新界面状态或者执行特定的逻辑。 4. **自定义滚动行为**:虽然ScrollBox默认提供了滚动功能,但开发者可以通过调整其属性(如ScrollBars属性)来自定义滚动...

    IDE fix pack v6.3.1 for Delphi 2010

    1. **IDEFixPackReg2010.exe**:这是 IDE Fix Pack 的安装程序,用户可以通过运行这个可执行文件将修复包集成到 Delphi 2010 中。安装过程中,程序会自动检测 Delphi 2010 的安装位置,并进行相应的配置更改,确保...

    用Delphi编写的消息对话框的自动关闭

    3. **添加定时器组件**:从工具箱中拖拽一个`TTimer`到窗体上,设置其`Interval`属性为想要的关闭延迟时间(比如10秒)。 4. **编写代码**: - 在`TTimer`的`OnTimer`事件处理程序中,调用`Close`方法来关闭对话框...

    Raknet for Delphi 简单封装2

    Raknet是一款强大的网络通信库,尤其适用于实时多人在线游戏和其他需要低延迟、高可靠性的网络应用。它提供了许多高级特性,如NAT穿透、封包排序和确认、数据压缩等。而Raknet for Delphi是对Raknet的Delphi版本封装...

    Delphi XE10.2 TCPIP服务端及客户端程序

    5. **异步操作**:考虑到网络通信的延迟性,Delphi的异步编程模型使得主应用程序不会因等待网络操作而阻塞。开发者可以使用异步回调函数或TThread类来实现非阻塞的网络通信。 6. **数据编码与解码**:在TCP/IP通信...

    delphi实现ping demo.

    综上所述,"delphi实现ping demo"是一个学习Delphi网络编程的好起点,它涉及到Windows API的使用、ICMP协议的理解以及跨平台兼容性的问题。通过深入研究和扩展这个示例,开发者可以提升自己在网络编程领域的技能,为...

    delphi_ping函数

    7. **解析响应**:解析接收到的ICMP头部,确认其类型为Echo Reply,校验和正确,然后提取延迟时间等信息。 8. **清理资源**:最后,使用`closesocket`关闭Socket,然后调用`WSACleanup`结束Winsock库的使用。 `...

    delphi线程检测sql连接不卡界面

    "Delphi线程检测SQL连接不卡界面"的主题着重于如何在后台执行耗时操作(如检查SQL数据库连接)而不阻塞用户的交互体验。Delphi是Object Pascal语言的集成开发环境,它提供了一种强大的多线程能力来解决此类问题。 ...

    Delphi 中的Hibernate

    9. **性能优化**:了解并应用最佳实践,如延迟加载、批处理更新和优化HQL查询,以提升性能和减少数据库负载。 10. **测试与调试**:使用单元测试框架验证ORM功能,并利用日志库(如Log4j或Delphi的日志组件)进行...

Global site tag (gtag.js) - Google Analytics