Delegate Sub SetLblCallback(ByVal Value As String)
    Private Sub SetLable(ByVal Value As String)
        Try
            If Me.InvokeRequired Then
                Dim d As New SetTextCallback(AddressOf SetText)
                Me.Invoke(d) '这里提示参数计算不匹配
            Else
                Label1.Text = [Enum].GetName(GetType(Winsock_Control.WinsockStates), Winsock1.GetState)
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub    Private Sub Winsock1_StateChanged(ByVal sender As Winsock_Control.Winsock, ByVal state As Winsock_Control.WinsockStates) Handles Winsock1.StateChanged
        SetLable('测试')
    End Sub
1、首先,VS2005下的多线确实是这么编写,代码应该没有什么问题;
2、只有在Winsock下进行调用才出现这个莫名其妙的提示;
3、Winsock本身的多线,是一个标准类库,简单的看了一下,应该没有什么问题;

解决方案 »

  1.   

    对Lable的赋值一开始是成功的,多次计算后,就产生了失败!
      

  2.   

    Me.Invoke(d) '这里提示参数计算不匹配
    VB不会,如果是C#,这句应这样写
    invoke(d,new object[]{Value })vb是不是应这样写啊
    invoke(d, new object[]{Value})?
      

  3.   

    问题解决,本贴散分;问题在于:
    Winsock1本身激发的错误事件被抛弃,造成了错误事件的冒泡,竟然冒泡到了主界面的多线里面;
    我靠靠靠~~~~~~~~~~~~~
      

  4.   

    靠,解决错误:发现只有在Connected之后,才产生了这个错误提示,究竟为什么呢??
    请大家解答If Winsock1.GetState <> Winsock_Control.WinsockStates.Connected Then
      SetLable("测试")
    End If这样就不会出错了,不过问题也就来了,一般需要的时候,也就是这个时候;