1

我在一个简单的应用程序中实现了 wcf P2P 设置。

我的问题是与多个客户一起测试的结果。十分之九,所有客户端将在网格中同步并毫无问题地连接。

但是,根据我关闭然后重新打开的客户端,它不会重新连接到网格。其他客户看不到它。

我的问题是我如何才能关闭并重新打开此客户端上的 p2p,以便它可以尝试再次连接?我可能会设置一个计时器,如果它没有连接,它可能会假设有一个问题,所以它会关闭它的 p2p 端点或其他任何东西,然后重新打开它以刷新整个事情。

我问这个是因为如果我关闭这个客户端,然后重新打开它,它将重新连接到网格。

我想要万无一失的连接。例如,您打开一个客户端,客户端会判断它是否必须重新启动,或者在一定时间后它没有获得连接,因此它会尝试“刷新”连接并重建它。

这有意义吗?

4

1 回答 1

1

由于某些未知的故障情况,而不是单纯地独自一人,很难确定您没有连接到网格。

对等通道上的 IOnlineStatus 属性可以告诉您是单独在网格中 (false),还是连接了对等点 (true)。您可以通过注册状态更改事件来获取此属性,如下所示:

IOnlineStatus status = myPeerChannel.GetProperty<IOnlineStatus>();
status.Online += new EventHandler(MyOnlineEventHandler);
status.Offline += new EventHandler(MyOfflineEventHandler);

因此,我想一种方法是设置一个计时器来检查您的在线状态,如果您离线的时间超过 X 时间,请处置您的频道并创建一个新频道。

于 2011-02-07T22:27:34.290 回答