0

ロード時にスレッドを開始する Windows フォーム アプリケーションがあります。スレッドは、WCF サービスを公開する ServiceHost を開始します。

スレッドを開始するコードは次のとおりです。

Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Dim th As New Thread(AddressOf (New Ecoute).Ecouter)
    th.Start()
End Sub

ここで、サービス Host を作成するコード

Sub Ecouter()
    host = New ServiceHost(GetType(ServiceEmulateur3270))

    host.AddServiceEndpoint(GetType(IEmulateur3270), New NetNamedPipeBinding(), "net.pipe://localhost")

    host.Open()
End Sub

サービスの呼び出されたメソッドで WCF 呼び出しを受け取ったときに、アプリケーションのメイン フォームでコントロールを更新したいと考えています。この Form への参照を取得するにはどうすればよいですか?

私はこのWinformsを見つけ、フォーム名でフォームインスタンスを取得しましたが、これはフォームの新しいインスタンスを作成する方法を示していますが、代わりに現在ロードされているフォームを取得したい.

または、スレッドがフォームの参照を WCF サービス クラスに渡すことは可能ですか?

4

1 に答える 1

0

ParameterizedThreadStartコンストラクターを使用して、たとえば次のように Form インスタンスを渡す必要があります。

Dim th As New Thread(AddressOf (New Ecoute).Ecouter)
th.Start(this)

Sub Ecouter(ByVal data As Object)
' you can safely cast data as a Form
End Sub
于 2012-12-13T17:14:58.607 に答える