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

这里是创建服务主机的代码

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

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

    host.Open()
End Sub

当我收到 WCF 调用时,在服务的被调用方法中,我想更新应用程序主窗体中的控件。我怎样才能得到这个表格的参考?

我找到了这个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 回答