热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Timer控制问题

Timer控制问题VCL组件开发及应用http:www.delphi2007.netDelphiVCLhtmldelphi_20061223220551160.html现有2个过程
Timer控制问题 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061223220551160.html
现有2个过程A和B,A使用Timer控制每隔一定时间T执行一次,执行完成以后再执行B过程,如果B执行时间超过A的时间间隔T,这时Timer执行A的定时到了,程序会怎么处理?有没有其它好的方法去控制?线程吗

哈,进入Timer就enabled   :=   False;   B执行完了再True.

//会出现冲突  
  //建议判断一下是否在处理中  
   
  procedure   TForm1.Timer1Timer(Sender:   TObject);  
  begin  
      if   FRunning   then   Exit;  
      FRunning   :=   True;  
      try  
          A;  
          B;  
      finally  
          FRunning   :=   False;  
      end;  
  end;

楼上的方法也不错,用线程一样会碰到这样的问题

用消息传递来控制执行顺序和时间间隔最适宜

const  
      WM_A   =   WM_User   +   1;  
      WM_B   =   WM_User   +   2;  
   
  type  
      TFormDemo   =   class(TForm)  
          procedure   FormCreate(Sender:   TObject);  
      private  
          FTickCount:   LongInt;  
          procedure   A(var   Msg:   TMessage);   Message   WM_A;  
          procedure   B(var   Msg:   TMessage);   Message   WM_B;  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      FormDemo:   TFormDemo;  
   
  implementation  
   
  {$R   *.dfm}  
   
  {   TFormDemo   }  
   
  procedure   TFormDemo.FormCreate(Sender:   TObject);  
  begin  
      PostMessage(Handle,   WM_A,   0,   0);  
  end;  
   
  procedure   TFormDemo.A(var   Msg:   TMessage);  
  begin  
      FTickCount   :=   GetTickCount;  
      {ProcessA}  
      PostMessage(Handle,   WM_B,   0,   0);  
  end;  
   
  procedure   TFormDemo.B(var   Msg:   TMessage);  
  var  
      Interval:   Integer;  
  begin  
      {ProcessB}  
      Interval   :=   GetTickCount   -   FTickCount;  
      while   Interval   <  10000   do   //假设A的执行间隔为10秒  
      begin  
          Interval   :&#61;   GetTickCount   -   FTickCount;  
          Application.ProcessMessages;  
      end;  
      postMessage(Handle,   WM_A,   0,   0);  
  end;

我一般是设一个全局变量,A完成后设1.B发现变量为1,则进行下一步,然后再设为2.A发现为2,则下一步.

那就不要用Time来控制&#xff0c;用递归&#xff01;

我一般是设一个全局变量,A完成后设1.B发现变量为1,则进行下一步,然后再设为2.A发现为2,则下一步.  
  //  
  不牵扯到多线程当然可以这样&#xff0c;你这样做还会有问题吗&#xff1f;应该能够解决了&#xff01;



推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
author-avatar
707282400_de0c8b
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有