我試圖通過一個共享sub中的IP調用將某些狀態傳遞給我的表單上的標籤。vb.net threading.thread傳遞變量的地址
這是當前的代碼,我使用:
Class Server
<STAThread()> Public Shared Sub Main()
Dim aTcpMessaging As IMessagingSystemFactory = New TcpMessagingSystemFactory()
Dim anInputChannel As IInputChannel = aTcpMessaging.CreateInputChannel(theIPforLocal & ":" & thePort)
Dim aStringMessagesFactory As IStringMessagesFactory = New StringMessagesFactory()
Dim aStringMessageReceiver As IStringMessageReceiver = aStringMessagesFactory.CreateStringMessageReceiver()
AddHandler aStringMessageReceiver.MessageReceived, AddressOf StringMessageReceived
aStringMessageReceiver.AttachInputChannel(anInputChannel)
End Sub
Private Shared Sub StringMessageReceived(ByVal sender As Object, ByVal e As StringMessageEventArgs)
LANResponse = Convert.ToString(e.Message)
Dim lanSent As String() = Nothing
Dim sep(3) As Char
Dim s As String = ""
sep(0) = "~"
'sep(1) = ","
lanSent = LANResponse.Split(sep, 2)
Dim a As New Threading.Thread(AddressOf getStatus)
a.SetApartmentState(Threading.ApartmentState.STA)
a.Start(Trim(lanSent(0)) & Trim(lanSent(1)))
End Sub
End Class
Private Shared Sub getStatus(ByVal data As Object)
lblStatus.text = ("Static: " & data)
End Sub
其給我的錯誤是上線lblStatus.text =( 「靜態」 &數據)
錯誤1無法從共享方法或共享成員初始值設定項中引用類的實例成員,而沒有該類的顯式實例。
任何幫助將是偉大的!
大衛
UPDATE
加入後:
Private Sub getStatus(ByVal data As Object)
If InvokeRequired Then
Invoke(New Action(Of Object)(AddressOf getStatus), data)
Else
lblStatus.Text = ("Static: " & data)
End If
End Sub
我得到這個錯誤誰都行暗淡了作爲新Threading.Thread(AddressOf的getStatus)
錯誤1 Overloader廣告解決失敗,因爲不能使用這些參數調用可訪問的'New': 'Public Sub New(start As System.Threading.ParameterizedThreadStart)':對非共享成員的引用需要對象引用。'Public Sub New(start As System.Threading.ThreadStart)':方法'Private Sub getStatus(data As Object)'沒有與委託'Delegate Sub ThreadStart()'兼容的簽名。
你解決我的「第三步」和「第四步「?對於咯咯笑聲,把服務器,'公共共享refToMyForm作爲MyFormClass'(其中'MyFormClass'是你的表單的類名),然後改變'AddressOf getStatus'到'AddressOf refToMyForm.getStatus'。 – rskar 2012-04-17 13:31:39