WPF应用程序在向多个WCF服务(MVVM)发送/接收消息时锁定
我正在为我的应用程序的正确架构苦苦挣扎。特别是UI锁定问题,我不知道为什么。我有两个应用程序都运行需要相互通信的服务。
当以任何方式发送消息时,我每次都创建一个新的通道工厂。
客户端每15秒向服务器发送一次消息。在命令中,服务器将消息发送到客户端(一次一个)。从理论上讲,服务器可以不断地从多个客户端接收消息,因此需要像Web服务器一样扩展,同时仍然保持UI响应。
问题是一段时间后我的UI锁定了,有时在服务器上,有时在客户端上。我很确定这是由于WCF(还有很多其他的东西在继续)。
如果我尝试通过创建频道(通过channelfactory)发送消息,发送消息然后关闭频道工厂,则需要一分钟才能发送消息(同时两个应用程序上的UI都被锁定)。如果我在发送消息后离开
channelFactory.close()
,则会立即发送消息。
我创建的服务对于SendMessage方法有[OperationContract(IsOneWay = true)]
。我的服务的实施有[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
。
为什么在最后使用channelFactory.close()时发送消息需要一分钟?
没有找到相关结果
已邀请:
1 个回复
卧沫
如果您需要在发送消息后更新UI,请按照上面的代码执行以下操作: