程序目的:实时监控九条生产线的运行状态。当生产线上的电子秤发生变化时能迅速获取稳定值,并保存。设计思想:利用九个timer实时巡检生产线的状态,每隔 0.25 秒向电子秤索要一次数据,如果发生变化,与上一次取得的值进行比较,如果出现三次相同即认为稳定(0排除在外),保存数据。现存缺陷:电脑总是死机。怀疑:    1) delphi 使用 timer 是有数量限制
          2)timer 使用时开辟无法回收的内存空间
          3)机器运行不够快(3.0GHZ 感觉不太慢)求助:    更好的解决思路和timer 的合理的使用方法。

解决方案 »

  1.   

    建议:
    用九个Timer不如用九个线程来实现周期性检测 
      

  2.   

    不知道你怎么写的,但是个人建议使用线程,线程当中也可以使用Timer,相对会比较简单一点。
      

  3.   

    TTimer不好,因为TTimer依靠消息机制。消耗的都是主线程的资源。9个TTimer,而且是0.25秒的间隔,不死才怪。主线程会忙于大量的消息处理。0.25秒就发一个消息,如果消息要处理很复杂,那其他消息就无法相应了。建议使用线程或者减少TTimer。
      

  4.   

    还是用线程的好 timer是抢占系统资源的
      

  5.   

    TTimer不好,精度不高而且多了极容易出问题,建议采用线程,不过线程也要注意咯.
      

  6.   


     日志-病毒-网络-操作系统-安全-c#-asp.net-java-delphi-sql-oracle学习资源
     在这里可以找找http://japee.com.cn/jew/bbs.aspx
      

  7.   

    开线程,用循环来查,注意在每个循环中Sleep一下,防止CPU使用过高
      

  8.   

    其实一个Timer+一个任务队列+一个线程池
    每条生产线都独立成一个对象,内部包括相应的操作方法
    Timer到时间,就一个个扔进任务队列
    线程池当中的线池一个个取出对象直接执行操作方法
    这样子的话,可以只需要一个+四到五个线程来完成。
      

  9.   

    建议用线程+信号量来做,不要用9个timer,不然,不死才怪呢。而且只间隔0.25秒
      

  10.   

    大家讲的太好了,终于明白,我公司三台监控电脑为何轮番死机,供方无法修复,说是cpu过热,要求更换风扇。原来程序用了10几个timer.好在时间设置不同。有谁能帮忙检查一下程序。留个邮箱。