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 个对象将在发生更改时收到通知,并在可达性调用中调用“OnChange”(通知您的事件处理程序)。

(当然,更好的是创建一个特殊的函数来初始化所有需要的对象,这样你就不需要调用这 3 个函数,因为它们已经真正测试了网络连接)

于 2013-10-12T19:59:51.347 回答
2

您应该能够简单地将事件处理程序添加到 ReachabilityChanged 事件,例如(未编译的测试);

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 回答
0

只需调用它就可以了,可以用 AppDelegate 编写

Reachability.RemoteHostStatus ();

Reachability.ReachabilityChanged += ReachabilityChanged;

static void ReachabilityChanged(object sender, EventArgs e){//Do Something};
于 2019-07-13T13:49:48.667 回答