|
|
1
8
您可以将回调合同强制转换为 ICommunicationObject 然后检查通道状态。 |
|
|
2
1
通信对象(即回调通道)上存在关闭和出错的事件。您可能需要为这些添加处理程序,并跟踪哪些客户端仍然有有效的可用通道。 您还可以查看IChannelInitializer类来实现对客户机的跟踪。 |
|
|
3
1
主要的问题是我没有得到任何例外,除了 TimeoutException . 我的服务被阻塞了1分钟(我设置的超时),直到异常被触发。 我通过以下解决方法解决了这个问题。我没有在服务的当前工作线程上调用客户端回调操作,而是创建了一个调用客户端回调操作并等待TimeoutException的新线程。如果超时发生,用户只需从他所属的聊天室列表中删除即可。 这是一个代码片段,展示了我是如何做到的: 首先,我创建了一个类,表示对客户机的单个调用:
假设以下代码是通知聊天室客户端已写入新消息的方法的一部分:
我只是创建一个新的yagzclientasyncCall对象,并让操作在一个新线程上被调用。 |