0

我现在遇到了一个烦人的问题。我有一个 Silverlight 4 应用程序(默认运行 OOB)。它使用带有 net.tcp 的 WCF 作为与服务器通信的手段。客户端使用 wcf 客户端代理的中央实例。只要一切都在服务器端继续运行,一切都很好。

如果我在所有事情的中间杀死服务器,我就会淹没在客户端的大量异常中(连接丢失、通道故障等)。

现在我正在寻找一种以干净和集中的方式处理此问题的方法(如果可能的话)。

SL 应用程序有一个位于 App.cs 中的中央客户端对象 (public static MyClient Client { get;set;}),它在应用程序启动时被初始化。

知道如何正确处理客户端对象上的任何连接问题吗?

4

2 回答 2

2

您提到您正在使用 WCF 客户端代理的中央实例。

如果是这种情况,那么当服务器发生错误时,代理将进入故障状态。为了使事情保持集中,您可以将客户端代理强制转换为ICommuicationObject,并将事件处理程序附加到Faulted替换故障代理的事件,并在事件触发时使用新代理。

关于集中访问资源的线程安全的常见警告适用!

于 2010-06-16T13:10:00.293 回答
1

我想我找到了一个可行的——虽然不是集中的——解决方案。与其用 try/catch 块来弄乱代码,它似乎只需要对 event.Error 属性进行空检查。如果连接发生问题,此属性始终不为空。仅当您尝试访问 event.Result 时才会引发异常。

它可能不是最漂亮的解决方案,但到目前为止它似乎有效。

也许有一个更优雅的方式虽然......

于 2010-06-16T12:59:58.067 回答