2

我正在使用我认为推荐的方法在我的 WinRT 应用程序中监听网络变化。

我使用此代码订阅了该事件。(我已经在很多地方尝试过,但目前我在 pageOnNavigatedTo方法中有它)。

NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged;

然后在OnNvaigatedFrom我删除它的方法中:

NetworkInformation.NetworkStatusChanged -= NetworkInformation_NetworkStatusChanged;

当我移除网络电缆时,NetworkInformation_NetworkStatusChanged事件被正确触发。但是,当我重新插入(重新联机)时,该事件被触发两次,并且我的数据(离线时本地存储)被上传到服务器两次。

有没有人遇到过这个/知道它为什么会发生 - 它让我发疯。

非常感谢克里斯

4

2 回答 2

1

我记得这是一个问题。好像还是这样。

http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/520ea5e2-cc17-486d-815e-528ca041d77f/

要解决您的问题,请使用标记跟踪网络可用性,并且仅在之前的网络状态不可用时才更新。

于 2013-01-14T16:03:32.583 回答
1

在我们的测试中,我们发现每个可用适配器都会收到一次事件。我们有 5 个适配器,因此每次我们重新插入电缆时,我们似乎都会收到与活动(启用)适配器一样多的事件。我们通过禁用其中一个适配器来测试这一点,并且事件的数量正好减少了一个,反之亦然。不过,似乎我们只收到一个断开连接的事件。

您的事件多次触发的另一个原因是您的网络确实断开并重新连接。

在任何情况下,您都必须防御性地编写代码来处理实现的现实以及与网络连接相关的一般不可靠性。

于 2013-12-16T23:50:11.920 回答