NetworkInformation NetworkStatusChanged事件被触发两次

时间:2013-01-14 15:23:17

标签: c# windows-8

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

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

NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged;

然后在OnNvaigatedFrom方法中删除它:

NetworkInformation.NetworkStatusChanged -= NetworkInformation_NetworkStatusChanged;

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

有没有人在遇到这个之前/知道为什么会发生这种情况 - 这让我很生气。

非常感谢 克里斯

2 个答案:

答案 0 :(得分:0)

我记得这是一个问题。好像它仍然是。

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

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

答案 1 :(得分:0)

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

事件不止一次触发的另一个原因是您的网络实际上已经丢失并重新连接。

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