3

インターネット接続があるかどうかを確認する「到達可能性」クラスに精通しています: https://github.com/xamarin/monotouch-samples/blob/master/ReachabilitySample/reachability.cs

ネットワークのステータスが変化したときに通知を受け取る方法があるかどうか疑問に思っていましたか? インターネットがないときに私のコレクションが読み込まれるとしましょう。画像は読み込まれません。iPad が突然インターネットに再び接続された場合は、もう一度ダウンロードをトリガーしたいと思います。

到達可能性クラスでは、次のコードが表示されます。

public static event EventHandler ReachabilityChanged;

    static void OnChange (NetworkReachabilityFlags flags)
    {
        var h = ReachabilityChanged;
        if (h != null)
            h (null, EventArgs.Empty);
    }

ただし、「OnChange」メソッドでブレークポイントを設定すると、Wifi をオフにしても呼び出されません。

何か案は?

よろしく、マット

4

3 に答える 3

7

わかりました、実際には自分で答えを見つけるべきでした。

通知を受ける前に、まず次の関数を呼び出す必要があります。

Reachability.InternetConnectionStatus (); 
Reachability.LocalWifiConnectionStatus ();
Reachability.RemoteHostStatus ();

これら 3 つの静的関数呼び出しを呼び出すと、必要なすべてのオブジェクトが初期化されます。これら 3 つのオブジェクトは、変更があると通知を受け取り、Reachability 呼び出しで "OnChange" を呼び出します (イベント ハンドラーに通知します)。

(もちろん、必要なすべてのオブジェクトを初期化する特別な関数を作成することをお勧めします。これにより、これら 3 つの関数を呼び出す必要がなくなります。これらの関数は、ネットワーク接続を実際にテストするためです)

于 2013-10-12T19:59:51.347 に答える
2

(コンパイルされたテストではありません);

Reachability.ReachabilityChanged += c_ReachabilityChanged;

static void c_ReachabilityChanged(object sender, EventArgs e)
{
    Console.WriteLine("Here I can handle that network reachability changed.");
}
于 2013-10-12T17:26:25.153 に答える