我用了一个timer时间间隔是100ms,但为什么不产生timer事件,程序如下:
private Sub Form_Load()  Timer1.Interval = 100  
  Timer1.Enabled = True  Do While 1  '死循环
  LoopEnd Subprivate Sub Timer1_Timer()  Dim i As Integer
  
  i = 0End Sub为什么这个程序没有timer事件?  

解决方案 »

  1.   

    Private Sub Form_Load()  Timer1.Interval = 100
      Timer1.Enabled = True  Do While 1  '死循环
      DoEvents
      LoopEnd Sub
      

  2.   

    编译成 .exe 文件执行。
      

  3.   

    private Sub Form_Load()  Timer1.Interval = 100  
      Timer1.Enabled = True  Do While 1  '死在这了
      LoopEnd Sub
      

  4.   

    是不是说,我在退出load事件之前,是不能响应timer事件的。
    是这样吗?
    是不是我把死循环放到,sub main中就可以了,因为我要有很多次的开关timer
      

  5.   

    Do While 1  '..........................程序都死在这里了..它没有功夫去执行TIMER了
      Loop
      

  6.   

    不太明白你想干什么反正你用
    Do While 1  
    Loop
    运行到这里就死.....
      

  7.   

    private Sub Form_Load()  Timer1.Interval = 100  
      Timer1.Enabled = True  Do While 1  '死循环
      LoopEnd Subprivate Sub Timer1_Timer()  Dim i As Integer
      
      i = 0End Sub-----------------------------------
    在LOAD事件中的循环一直没有结束的机会,又怎么可能去执行TIMER的事件呢?
      

  8.   

    你这样试试看
    do while 1
    doevents
    loop
      

  9.   

    你这样写程序是什么意思呀?
    你那样写根本看不到什么效果!
    Dim i As Integer
    Private Sub Form_Load()  Timer1.Interval = 100
      Timer1.Enabled = True
    'Timer1.Enabled = False
    End SubPrivate Sub Timer1_Timer()
      Do While i <= 10   '死循环
        Print i;
        i = i + 1
        DoEvents
      LoopIf i >= 10 Then Timer1.Enabled = False
    End Sub
    你这样试一下,就可以看到了!!!
    不过,有时你Timer1.Interval 设的太小,你来不及看到,时间就过去了。所以……
      

  10.   

    不是的,我是想从串口中取数,比如我要取3个数,取不到的话就一直去读,串口的input buffer。就相当于是一个死循环,如果我取不到数就会一直的读下去。这样的话程序就会死掉,所以我有叶定时器,当开始读串口时打开定时器,计时,如果在规定的时间内还没有读到数据的话,就产生一个错误消息,退出了。我把timer当成中断来用了,用错了。那现在我该怎么用,timer,在这种情况下。
      

  11.   

    Do While 1  '死循环
      Loop
    这句是不是放错地方了
      

  12.   

    Dim i As Integer
    private Sub Form_Load()
      i = 0
      Timer1.Interval = 100  
      Timer1.Enabled = True  Do While 1  '死循环
         i = i + 1
         if i>100 then
            exit do 
         end if  
      LoopEnd Sub
      

  13.   

    如果一定要与时间想联系Private Sub Form_Load()
            Dim i, j, k
            i = Time()
            Do While 1
               j = Time()
                k = j - i
               If k > 0.00002 Then
                  Exit Do
               End If
            Loop
    End Sub
      

  14.   

    根本用不着那个死循环啊!!
    感觉楼主是做汇编程序设计一样。。
    面向对象编程跟那个不一样的。 
    就在timer里面检测数据。
    没有就退出。
    有就:关闭timer,调用相应处理程序,打开timer。
      

  15.   

    千万不要写死循环,若一定要这样,请在其中加上Doevents,否则等死!
    While True

    wendWhile True
          Doevents'系统拿出时间片刻,允许系统响应其他事件
    wend
      

  16.   

    读串口的过程写在timer事件里啦。它同样是个循环啊!还好控制的多,不让读了设enabled=false就退出了
      

  17.   

    谢谢 大家, 非常感谢,不过这次我的分儿,给得太少,对不住各位了。是这样,我的串口不是一直得在通信,只是在某一段时间在用,如果放到timer中处理,我必须要两个timer一个用来取数,一个用来超时,一个timer是实现不了的,因为不知道在什么时候打开这个timer所以我想还是用doevents来做吧,这样的话,timer的时间就会不精准,本来就是时间片,不是硬件中断,没办法,就这样吧。我是做底层软件的开发的,与硬件很接近,所以面向对象的思想,还是比较欠缺,还得大家多多帮助再次感谢 各位的帮助, 谢谢。