进期在作一个检测设备自动化改装的小活,通过串口访问检测设备,然后我timer控件控制mscomm控件从串口循环检测读取数据.在一个工程里面有好几个窗体是这样作的.现在遇到了这样一个问题?就是已经卸载的窗体当中的timer控件有时候还会有响应,这就造成了其他用mscomm控件的窗体在打开串口时出错!我在窗体卸载的时候也把timer控件的Enable置成false了,而且在窗体设计时的timer控件的Enable也是false,我在窗体加载的时候才把他置成true.
请问各位高手怎么能把这个timer控件彻底的卸载掉.或者有其他解决这个问题的方法

解决方案 »

  1.   

    把窗体彻底掉
    dim frmtmp as form1
    frmtmp.show vbmodal 
    set frmtmp = nothing
      

  2.   

    顶一下
    楼主这个情况到是没碰到过.再加上这句试试呢.
    (在把Enabl属性致为False时.)
    timer1.Interval = 0
      

  3.   

    timer 事件中是否有循环语句?如果有,让它终止执行。
    Enabled = False 只能让它不再触发,却无法终止已经开始的事件。timer1.Interval = 0 同理。Dim bStop As BooleanPrivate Sub Form_Unload()
       bStop = True
       Timer1.Enabled = False
    End IfPrivate Timer1_Timer()
       Do While ...  '(或 For ...)
          If bStop Then Exit Sub
          '......
       Loop  '(或 Next)
    End Sub
      

  4.   

    //就是已经卸载的窗体当中的timer控件有时候还会有响应呵呵 偶从来都碰到过,可能处理窗口时(譬如 加载、卸载 、调用窗口函数 等...)编码风格不规范 造成的。
      

  5.   

    openforever(++) :
        正如of123所讲的把timer控件的Interval置成0也没有起到作用,可是我的timer控件的事件里面也没有循环
    该怎么办呢,还希望各位多多支持,我都郁闷了好几天了
      

  6.   

    baoaya(点头) :
            这位朋友,编码风格不规范会出现这样的问题吗?就是一个unload 语句卸载窗体难道这里面还会有什么文章吗?
      

  7.   

    我找到问题所在了,问题真得出在了timer事件内的循环中,我在timer事件中加入了一个延时的循环就出现这种情况了