我有一个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服务类?
答案 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