共有サブのIP呼び出しからフォームのラベルにステータスを渡そうとしています。
これは私が使用している現在のコードです:
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 =( "Static:"&data)にあります
エラー1クラスの明示的なインスタンスがないと、共有メソッドまたは共有メンバー初期化子内からクラスのインスタンスメンバーを参照できません。
どんな助けでも素晴らしいでしょう!
デビッド
アップデート
追加後:
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
このエラーは1行も表示されませんDimaAs New Threading.Thread(AddressOf getStatus)
エラー1次の引数でアクセス可能な'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()'と互換性のある署名がありません。