WinForms:如何获取对已加载表单的引用

时间:2012-12-13 17:05:41

标签: winforms wcf reflection

我有一个Windows窗体应用程序,它在加载时启动一个Thread。该线程启动一个ServiceHost,它公开一个WCF服务。

这里是启动线程的代码:

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, get form instance by form name,但这显示了如何创建表单的新实例,但我希望改为获取当前加载的表单。

OrElse,Thread是否可以将表单的引用传递给WCF服务类?

1 个答案:

答案 0 :(得分: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