C# 当P2P赢了';t连接,如何“连接”;“重新启动”;它在客户机中运行

C# 当P2P赢了';t连接,如何“连接”;“重新启动”;它在客户机中运行,c#,wcf,p2p,net.p2p,C#,Wcf,P2p,Net.p2p,我已经在一个简单的应用程序中实现了wcf P2P设置 我的问题是对多个客户机进行测试的结果。十次中有九次,所有客户端都会在网格中同步,并且连接时不会出现问题 但是,根据我关闭然后重新打开的客户端,它将不会重新连接到网格。其他客户没有看到它 我的问题是,我该如何关闭并重新打开该客户端上的p2p,以便它可以再次尝试连接?我设置了一个计时器,可能每分钟左右,如果它没有连接,它可能会假设有问题,所以它会关闭它的p2p端点或其他什么,然后重新打开它刷新整个过程 我这样问是因为如果我关闭这个客户端,然后重新

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

我的问题是对多个客户机进行测试的结果。十次中有九次,所有客户端都会在网格中同步,并且连接时不会出现问题

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

我的问题是,我该如何关闭并重新打开该客户端上的p2p,以便它可以再次尝试连接?我设置了一个计时器,可能每分钟左右,如果它没有连接,它可能会假设有问题,所以它会关闭它的p2p端点或其他什么,然后重新打开它刷新整个过程

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

我想要防傻瓜的连接。例如,您打开一个客户机,客户机将确定它是否必须重新启动,或者在一段时间后没有连接,因此它会尝试“刷新”连接并重建连接


这有意义吗?

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

对等通道上的IOnlineStatus属性可以告诉您网格中是否只有您一个人(false),或者您是否连接了对等点(true)。您可以通过注册状态更改事件获得此属性,如下所示:

IOnlineStatus status = myPeerChannel.GetProperty<IOnlineStatus>();
status.Online += new EventHandler(MyOnlineEventHandler);
status.Offline += new EventHandler(MyOfflineEventHandler);
IOnlineStatus status=myPeerChannel.GetProperty();
status.Online+=新事件处理程序(MyOnlineEventHandler);
status.Offline+=新的EventHandler(MyOfflineEventHandler);

所以我想一种方法是用定时器检查你的在线状态,如果你离线的时间超过X,处置您的频道并创建一个新频道。

由于某些未知的故障状况,很难确定您是否未连接到网格,而不仅仅是因为您独自一人

对等通道上的IOnlineStatus属性可以告诉您网格中是否只有您一个人(false),或者您是否连接了对等点(true)。您可以通过注册状态更改事件获得此属性,如下所示:

IOnlineStatus status = myPeerChannel.GetProperty<IOnlineStatus>();
status.Online += new EventHandler(MyOnlineEventHandler);
status.Offline += new EventHandler(MyOfflineEventHandler);
IOnlineStatus status=myPeerChannel.GetProperty();
status.Online+=新事件处理程序(MyOnlineEventHandler);
status.Offline+=新的EventHandler(MyOfflineEventHandler);

因此,我认为一种方法是使用计时器检查您的在线状态,如果您离线时间超过X,则处理掉您的频道并创建一个新频道。

这就是我最后使用计时器所做的。它似乎工作正常,到目前为止,在重新建立连接方面有100%的成功率。这就是我最后使用计时器所做的。它似乎工作正常,到目前为止,重建连接的成功率为100%。