今天 使用 vb.net DoEvents碰到一个很奇怪的问题,就是DoEvents后面的代码不执行。
程序是在一个函数内,启动了一个timer做一些工作,然后主函数等待,检查某个变量,知道这个变量为某值,才结束等待,并返回相应的值。被主函数检查的变量, 在timer事件中处理程序中赋值。
大概的例子可能是如下:故障现象是:主过程中 str1 = fun1()前面的语句能正常执行,后面的程序不会运行。调试监控后发现:程序 运行到 Application.DoEvents() 结束,不会再继续运行。
而且这一现象不是没回都出现,而是有时发生,有时不发生。
不知各位有没有碰到次问题。
--------示例代码:-----------------------
Sub main1()
。。。。。。
Dim str1 As String
str1 = fun1()
。。。。。。
End Sub
Function fun1() As String
t1 = New Timer()
t1.Interval = 2000
AddHandler t1.Tick, AddressOf t1_Tick
Dim ii As Int16
t1.Start()
For ii = 0 To 2 Step 0
If v_xx = 1 Then
Exit For
End If
Application.DoEvents()
Next
Return v_xx.ToString
End Function
Dim t1 As Timer
Dim v_xx As UInt16 = 0
Private Sub t1_Tick(ByVal sender As Object, ByVal e As System.EventArgs)
Try
t1.Stop()
If read_data() = True Then
v_xx = 1
End If
Catch ex As Exception
Finally
If v_xx <> 1 Then
t1.Start()
End If