本人现在要用轮询的方法去询问多台终端,轮询在一直进行,如果有终端应答则处理终端的要求,处理完了以后继续轮询。这样的轮询应该如何处理?是放在TIMER事件中按一定的时间去挨个问讯,还是应放在一个LOOP循环中去执行?或者要作成一个多线程的程序?
也就是说轮询这样一个过程应在那里处理比较好。

解决方案 »

  1.   

    用timer时间轮询的一个缺点就是不能及时获得信息,尤其是当系统进行其他大量数据处理时就会出现长时间延时,我觉得还是用loop循环比较好,但要控制系统占用时间,否则太占用资源,甚至导致死机
      

  2.   

    我也同意楼上的说法:用timer  不够灵活.   用循环 占用系统资源比较严重,不能保证24小时运行.最好的方法建议用多线程,但是vb用多线程! 唉! 一言难尽啊.网上的好多例子我都看过了,没一个能完全成功的.关注 up
      

  3.   

    我在DO...LOOP循环中使用了DoEvents语句,开始的时候界面还有响应,可是过一会就死机了,这该如何解决?另外如何控制系统占用时间?能不能说的明白点?多谢:)
      

  4.   

    在项目中遇到大量计算的部分,我做过这样的比较的:
    用DoEvents的话,计算时间会增加,并且监视进程的内存增量会猛增.
    但不用DoEvents的话,由于一直占有大量cpu时间,在窗体显示方面又会出问题.窗体什么反应也没有,什么操作都不相应. 考虑用户操作方面,这样也不行呀!所以一直想用多线程来解决,我的想法是:遇到有大计算量的过程或部分的时候,就新开一个线程,让它单独计算该结果,计算完结果以后返回结果给主程序,线程结束.
    但是用vb使用多线程,不知道是本人能力的问题,还是vb本身做多线程有先天不足的地方(听csdn一些大侠讲的).唉! 还望有高手来指点指点呀!再次 up
      

  5.   

    多线程例子:http://www.dapha.net/down/list.asp?id=882
      

  6.   

    我做过一个门禁监控程序,开始是用TIMER 轮巡,还停稳定可靠的,唯一的缺点就是如果下面的终端太多,一个循环的时间太长,不过你要是考虑稳定,终端又不太多的话,最好还是用
    timer比较好,程序简单,也比较稳定。
      

  7.   

    俄手上还有一个"使用activex exe来解决多线程"的文章.因为出处不记得了,楼主留下emial!大家共同研究,研究..............
      

  8.   

    我的EMAIL:[email protected]
    我记得好象activex exe来解决多线程的问题时,VB不能有与用户交互的界面,但我这个有。
    大家看看我这样做行吗?
    1。从COM口先发一次数据出去,如果终端有回应则在MScomm1的ONCOMM事件中去发下一次,也就是在OnComm事件中去轮询。
    2。如果在规定的时间内终端无回应,则在TIMER事件中去发下一次,如果有回应则从第一种继续,如果还没有则第二种继续。
    这样将轮询放在事件中去处理,就不会造成死机了吧,不知这样做能不能解决。