2012-04-23 7 views
0
Public Shared _formRef As frmMain 
Public Shared f As frmMain 

    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) 
      _formRef = f 

      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 

Class Sending 
     Public Shared Sub Main(ByRef whatToWrite As String) 
      Dim aTcpMessaging As IMessagingSystemFactory = New TcpMessagingSystemFactory() 
      Dim anOutputChannel As IOutputChannel = aTcpMessaging.CreateOutputChannel(theIPforVM & ":" & thePort) 
      Dim aStringMessagesFactory As IStringMessagesFactory = New StringMessagesFactory() 
      Dim aStringMessageSender As IStringMessageSender = aStringMessagesFactory.CreateStringMessageSender() 

      aStringMessageSender.AttachOutputChannel(anOutputChannel) 
      aStringMessageSender.SendMessage(whatToWrite) 
     End Sub 
End Class 

    Private Shared Sub getStatus(ByVal data As Object) 
     _formRef.UpdateLabelText("Static: " & data) 
    End Sub 

    Public Sub UpdateLabelText(ByVal text As String) 
     If Me.lblStatus.InvokeRequired Then 
      Me.lblStatus.Invoke(New Action(Of String)(AddressOf UpdateLabelText), New Object() {text}) 
     Else 
      Me.lblStatus.Text = text 
     End If 
    End Sub 

#Region "Form Load" 
    <STAThread()> Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

     Call Server.Main() 
     '-------------------------------- 
     isTesting = False 
     lblVer.Text = "V.7" 
     '-------------------------------- 
    End Sub 
#End Region 

に変数を渡すことが、かつて私はあなたが私の画像に表示されるエラーがvb.netが共有潜水艦

error

しかし、奇妙なことに、私は探していた値を渡す行う添付取得コードをオフに発射以下のために:

error 2

答えて

1

あなたは共有変数にfrmMainの実行中のインスタンスを割り当てることはありません。

<STAThread()> Public Shared Sub Main(formRef As frmMain) 
     f = FormRef 

し、その後に、このメソッドへのお電話を変更します:あなたはあなたのサーバーのメインメソッドがに変更すると

あなたの問題を解決する必要があり、その次に

Call Server.Main(Me) 

(Server.Mainが呼び出されると仮定するとfrmMainから)。

+0

上記の説明を私に見せてもらえますか? frmMainは、プログラムの起動時にすでに表示されています。 – StealthRT

+0

申し訳ありませんが、メインメソッド名をアプリケーションの入口として誤って読んでいました。私はあなたがする必要があると思うことを示すために私の応答を改訂しました。 –

+0

これらの変更を加えて、私は同じ行に同じエラーが表示されています。 – StealthRT

関連する問題