我们有用于扑克桌面游戏的(多个)客户端-(一个)服务器架构。我们正在使用回调 channel 使用回调通知。
但有时由于互联网连接断开,该特定客户端与服务器断开连接,该特定客户端的 WCF channel 也进入故障状态,其位于服务器中的回调 channel 也故障。
设想 :
该客户端正在玩游戏,而互联网连接断开,该游戏停止,他/她的游戏窗口仍然打开,当他/她的互联网连接恢复时,该客户端从服务器中退出,但该玩家的游戏窗口仍然打开并且该玩家可以当他/她的 WCF channel 退出时,不要做任何事情。
我们想在他/她从服务器中退出并抛出“”时关闭该特定客户端的窗口。 CommunicationObjectAbortedException ' 异常(exception)。
我们不能使用以前的 WCF channel 的回调 channel ,因为它处于错误状态。
所以我们尝试在服务器中创建新的回调 channel ,同时使用下面的代码:
操作上下文。 当前 .GetCallbackChannel();
但这里 Current 显示“ NULL ”,因为该播放器的 WCF channel 已中止,因此它会抛出“对象引用未设置为对象实例”的错误。
那么是否有任何解决方案可以使用已中止的 WCF channel 的回调 channel 或恢复该 WCF channel 而不重新初始化它们或使用新 channel 调用该客户端?
最佳答案
我会尝试以下:
捕获这个失败,并从列表中删除它的回调(我想你管理一些回调列表)。
关于wcf - 抛出 CommunicationObjectAbortedException 后恢复回调 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19538860/