主机:具有以下功能:IsOneWay=False
调用此函数时 - 在主机中弹出 MessageBox 。
客户:有一个winform,其中只有按钮,可以调用主机的功能。
如果主机中的功能IsOneWay = true - 我可以多按客户端按钮(如果我发布了消息框,他不在乎在主持人与否)。
但如果IsOneWay = False - 那么他让我按一次(直到我发布主机上的MesageBox .. ..
host does he do that ?
How the Client knows that he should be blocked until the user releases the MessageBox on the Host side ?
答案 0 :(得分:3)
在取消消息框之前,WCF主机不响应客户端。
如果您要在客户端进入调试器,您应该看到您的代码仍然在对主机的WCF调用中。如果你等了足够长的话,它最终会超时。 WCF可以这样做,因为IsOneWay=false
要求服务器在客户端继续执行之前返回。当IsOneWay=true
客户端发送请求时,服务器立即响应并允许客户端继续(在执行任何服务器代码之前)。
IsOneWay=false
Client Server
------ | ------
1. click --> method --> messagebox waits for OK
(client can't continue until server returns)
2. continue <-- method <-- user dismisses messagebox
IsOneWay=true
Client Server
------ | ------
1. click --> method --> messagebox waits for OK
(client continues regardless of server state)
2. click --> method --> 2nd messagebox waits for OK
user dismisses messageboxes
etc...