首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

vb.net DoEvents的奇怪有关问题!

2013-02-19 
vb.net DoEvents的奇怪问题!!!今天 使用 vb.net DoEvents碰到一个很奇怪的问题,就是DoEvents后面的代码不

vb.net DoEvents的奇怪问题!!!
今天 使用 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


            End Try
        End Sub

        Function read_data() As Boolean '读取数据,例如串口通讯程序
            '具体代码
            。。。。。。
        End Function


鼠标有问题了吧
[解决办法]
你用串口读数据线程去调用你的TIMER里面的事件试试?

    '触发接收事件
    Public Sub Sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Me.Invoke(New EventHandler(AddressOf "Timer事件"))         '调用
        End If
    End Sub

[解决办法]
http://bbs.csdn.net/topics/390200153

参考我以前问过的一个帖子吧 ,里面有版主提的建议,

热点排行