线程的工作是下载文件,并定时向主窗体报告下载进度,我用了TTimer实现定时功能,现在我发现,如果程序忙着下载的话(阻塞方式),定时器并不报告信息,只是偶尔才执行一下,并不能很好的实现程序的功能。请问在线程中是否有更好的定时发送的方法?

解决方案 »

  1.   

    那你为什么不换种方法呢?在线程中直接改变主窗体的下载进度信息,如果你用lable作为提示你可以直接在线程里面修改值啊
      

  2.   

    用什么下载IDHTTP的话可以在相应的事件中写代码,很方便实现你的功能啊
      

  3.   

    我是直接用api来实现的,没有用控件,我没想到会有这种问题
    还有别的解决方法吗?
      

  4.   

    在线程中执行Application.processmessage,或者调用sleep,主程序中的timmer应该能正确访问到数据
      

  5.   

    定时器需要通过消息循环支持, SOCKET堵塞模式下不行的
    我也写过下载,从来不用定时器, 有数据的时候自己在线程通知主线程去执行就行了 
      

  6.   

    堵塞模式下的线程响应不了消息的,
    加Application.processmessage估计没什么用, TIME的定时器肯定不准了, 线程如果一直堵塞状态,你下边的代码没机会执行到的 
    可以在线程收到数据调用主线程 或者另外开一线程来做定时操作