delphi中的timer是否就是多线程?
我没有做过线程的程序还,觉得多线程和timer有点像,都可以同时做某件事而不影响。
请问timer和多线程有哪些本质区别呢?
他们的优点缺点各有哪些?

解决方案 »

  1.   

    不是。多个Timer的OnTime事件都是在主线程中的,相互会影响。
      

  2.   

    Timer是在窗口函数中顺序接收消息队列中发来的WM_TIMER消息来处理,属于同步处理。一个WM_TIMER没处理完毕下一个会阻塞!所以在使用TIMER时如果Interval<Timer内事件处理时间时,也不会发生过程重入现象(除非使用Application.ProcessMessages)。
    而线程在并行运行时则不会受限制。
    详细
      

  3.   


    如果一个WM_TIMER没处理完毕,但是响应代码里有application.processmessages;
    则下一个会“打断”正在执行的响应处理函数,而立即得到执行,它执行完,原来的响应处理函数才继续执行
      

  4.   

    根本不是!timer仍然会造成主线程的卡住,而多线程却不会!timer尽量要少用,尽管它非常方便。
      

  5.   

    不能讲就是,你只能讲你在某些时候把他看成线程。呵呵。
    他们区别还是比较大地,timer 首先是在主线程中,然后它又基于消息。