Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF,如何自宿主回调?_C#_Wcf_Self Hosting - Fatal编程技术网

C# WCF,如何自宿主回调?

C# WCF,如何自宿主回调?,c#,wcf,self-hosting,C#,Wcf,Self Hosting,我有一个WCF服务库,它由一个自主机[Winform]和一个客户端[Winform]运行,我使用NetTcpBinding。 我希望客户端从WCF服务调用一个方法,以在自主机Winform上弹出一个消息框。 要点:我想向服务器端发送一个映像,它应该以新的形式出现,但我无法在WCF服务库及其自身主机窗体之间进行通信。 请您提供一个示例,演示当客户端从WCF服务库调用方法时,如何在自宿主winform上显示messageBox。您可以将服务创建为单例,并在其构造函数中传递表单。然后将此服务对象传递到

我有一个WCF服务库,它由一个自主机[Winform]和一个客户端[Winform]运行,我使用NetTcpBinding。

我希望客户端从WCF服务调用一个方法,以在自主机Winform上弹出一个消息框。
要点:我想向服务器端发送一个映像,它应该以新的形式出现,但我无法在WCF服务库及其自身主机窗体之间进行通信。


请您提供一个示例,演示当客户端从WCF服务库调用方法时,如何在自宿主winform上显示messageBox。

您可以将服务创建为单例,并在其构造函数中传递表单。然后将此服务对象传递到ServiceBase


然后,当您得到一个函数调用时,您将有对表单的引用,并且可以以这种方式操作它。请注意处理表单应用程序时的线程限制。

您可以从将映像发送到服务器端的服务调用返回成功或失败消息。假设您成功地将消息发送到服务器,则可以打开新表单并填充消息框或希望向用户显示的任何用户界面控件。正如我在评论中提到的,服务是多租户的,您不应该在服务层混合用户界面相关代码。

我是WCF的新手,您能给我举个简单的例子吗@kevinGreen将特定于用户界面的东西添加到服务中是违反SOA原则的。您的服务不应该真正关心表示逻辑处理事情的方式,问题是如何在表单和服务之间进行通信。虽然这可能不是最佳实践,但它回答了这个问题。如果您希望与服务和GUI真正分离,那么适当的建议是在服务中包含一些GUI可以绑定到的事件,然后当服务器从客户端接收到映像时,它将触发一个事件。然后GUI将捕获该事件,并弹出一个新表单。