2

推奨されるアプローチを使用して、WinRT アプリケーションでネットワークの変更をリッスンしています。

このコードを使用してイベントにサブスクライブします。(私は多くの場所で試しましたが、現在はページOnNavigatedToメソッドにあります)。

NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged;

次に、OnNvaigatedFromメソッドでそれを削除します:

NetworkInformation.NetworkStatusChanged -= NetworkInformation_NetworkStatusChanged;

ネットワーク ケーブルを取り外すと、NetworkInformation_NetworkStatusChangedイベントが正しく発生します。ただし、接続し直す (オンラインに戻る) と、イベントが 2 回発生し、データ (オフライン中にローカルに保存されている) がサーバーに 2 回アップロードされます。

誰もこれに遭遇したことがありますか/なぜそれが起こっているのかを知っています-それは私を怒らせます.

どうもありがとうクリス

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

テストでは、使用可能なアダプターごとに 1 回イベントを受け取ることがわかりました。アダプターが 5 つあるため、ケーブルを再び差し込むたびに、アクティブな (有効な) アダプターの数だけイベントが発生するようです。アダプターの 1 つを無効にすることでこれをテストし、イベントの数をちょうど 1 つ減らし、その逆も行いました。ただし、切断のイベントは 1 つしか取得できないようです。

イベントが複数回発生するもう 1 つの理由は、ネットワークが実際にドロップして再接続するという事実です。

いずれにせよ、実装の現実とネットワーク接続に関連する一般的な信頼性の低さに対処するために、防御的にコードを書くのはあなたの責任です。

于 2013-12-16T23:50:11.920 に答える