2011-03-12 60 views
0

我打电话从BackgroundWorker的下面的代码,但不是设置所需的文本,它的应用程序添加标题lisbox 有什么不对的地方安全的跨线程调用错误

Private Sub SetStatus(ByVal sStatus As String) 
     If Me.lsbLog.InvokeRequired Then 
      Dim d As New SetTextCallback(AddressOf SetStatus) 
      Me.lsbLog.Invoke(d, New Object() {[Text]}) 
      '// Me.Invoke(Sub() SetStatus(sStatus)) 
     Else 
      If Mid$(LCase$(sStatus), 1, 4) = "sent" Then 
       tslSent.Text = "Sent:" & FormatNumber(lSent, 0, TriState.False) 
      Else 
       lsbLog.Items.Add(sStatus) 
      End If 
     End If 

    End Sub 

回答

2

你拿起形式的Text属性当您调用委托(...New Object() {[Text]} ...)。您想在代表电话中发送sStatus参数,而不是:

If Me.lsbLog.InvokeRequired Then 
    Dim d As New SetTextCallback(AddressOf SetStatus) 
    Me.lsbLog.Invoke(d, New Object() {sStatus}) 
    ''# ...and so on