我有一个WCF服务(托管在WPF应用程序中),用于处理客户端(WPF)之间的通信。这是一个场景,其中一个客户端向servuce发送消息,该消息将其广播到其他客户端,但消息导致另一个客户端发回新消息并且它们都冻结。经过一些阅读后,我怀疑第二个客户端尝试拨打服务,而服务的呼叫仍然没有完成(使用相同的频道)。但是,我不确定我的假设是否正确,如果是这样,如何克服它。
更详细一点:客户端是文本编辑器。如果您编写一个,则表示更改的操作将发送到服务,并从那里发送到其他客户端。当我尝试发送关于其他人的操作时#39;虽然插入符号,它冻结了。我假设它是因为第二个客户端接收的InsertOperation导致插入符号移动并且它尝试在事件处理程序中使用服务用于发送消息的相同通道发送CaretMoveOperation,从而导致死锁。
你怎么看?你能提出一些建议吗?答案 0 :(得分:0)
我会检查两件事
答案 1 :(得分:0)
您必须查看服务行为属性。当事情看起来一次只处理一条消息时(它可能意味着单线程)。
摘自MSDN