Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.ios Monotouch—网络状态更改时收到通知_Xamarin.ios_Xamarin - Fatal编程技术网

Xamarin.ios Monotouch—网络状态更改时收到通知

Xamarin.ios Monotouch—网络状态更改时收到通知,xamarin.ios,xamarin,Xamarin.ios,Xamarin,我熟悉“可达性”类来检查是否存在internet连接: 我现在想知道,当网络状态发生变化时,是否有办法得到通知? 假设我的收藏是在没有互联网的情况下加载的。图像将无法加载。如果iPad突然重新连接互联网,我想再次触发下载 在可达性类中,我看到以下代码: 公共静态事件事件处理程序可达性已更改; 静态void OnChange(NetworkReachabilityFlags标志) { var h=可达性改变; 如果(h!=null) h(null,EventArgs.Empty); } 但是,

我熟悉“可达性”类来检查是否存在internet连接:

我现在想知道,当网络状态发生变化时,是否有办法得到通知? 假设我的收藏是在没有互联网的情况下加载的。图像将无法加载。如果iPad突然重新连接互联网,我想再次触发下载

在可达性类中,我看到以下代码:

公共静态事件事件处理程序可达性已更改;
静态void OnChange(NetworkReachabilityFlags标志)
{
var h=可达性改变;
如果(h!=null)
h(null,EventArgs.Empty);
}
但是,如果我在“OnChange”方法中设置了断点,那么在我关闭Wifi时不会调用它

有什么想法吗


在这方面,Matt

您应该能够简单地向ReachabilityChanged事件添加一个事件处理程序,比如(未编译的测试)

Reachability.ReachabilityChanged+=c_ReachabilityChanged;
静态无效c_可达性更改(对象发送方,事件参数e)
{
WriteLine(“在这里我可以处理网络可达性的改变。”);
}

好的,我应该自己找到答案

在收到通知之前,应首先调用以下函数:

Reachability.InternetConnectionStatus (); 
Reachability.LocalWifiConnectionStatus ();
Reachability.RemoteHostStatus ();
调用这3个静态函数调用将初始化所有必要的对象。这3个对象将在发生更改时得到通知,并在可访问性调用(通知事件处理程序)中调用“OnChange”


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

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

Reachability.RemoteHostStatus ();

Reachability.ReachabilityChanged += ReachabilityChanged;

static void ReachabilityChanged(object sender, EventArgs e){//Do Something};

我知道如何添加事件处理程序,但“OnChange”中从未调用断点,因此它也不会触发事件。我在模拟器上测试它,关闭笔记本电脑的Wifi,在设备上启动应用程序,进入设置关闭Wifi,然后返回应用程序。我不确定我的测试场景是否良好。@马特,对不起,可能误解了你当时的要求,断开笔记本电脑应该可以进行测试。如果那门课对你不起作用,你可以去监控网络状态。你误解它并不奇怪,因为我的话有点让人困惑(我改变了它)。您提供的链接是针对Android(monodroid),而不是针对iOS(monotouch)。不管怎样,我还是将你的链接加入了书签,因为如果我想将我的应用程序移植到Android上,我可以使用它:-)@Matt Good,你找到了解决方案,我应该停止在烹饪时发布答案,以减少困惑;)