可达性:两次调用TryGetFlags时为空标志

本文关键字:TryGetFlags 标志 调用 两次 可达性 | 更新日期: 2023-09-27 18:18:05

我有这个代码来测试网络连接:

        if (remoteHostReachability == null) {
            remoteHostReachability = new NetworkReachability (HostName);
            // Need to probe before we queue, or we wont get any meaningful values
            // this only happens when you create NetworkReachability from a hostname
            reachable = remoteHostReachability.TryGetFlags (out flags);
            //remoteHostReachability.SetCallback (OnChange);
            remoteHostReachability.SetNotification (OnChange);
            remoteHostReachability.Schedule (CFRunLoop.Current, CFRunLoop.ModeDefault);
        } else {
            reachable = remoteHostReachability.TryGetFlags (out flags);
        }

第一次调用时,标志是可以的。但是,当第二次调用它时,标志总是等于 0 。在iOS模拟器5.0上测试。

有什么问题吗?在苹果和Xamarin的例子中,NetworkReachability只创建一次。

可达性:两次调用TryGetFlags时为空标志

我发现当使用可达性时,而不是测试远程状态,我只是确保主机是可达的。

Reachability.HostName = "www.google.com";
var reachable = (Reachability.InternetConnectionStatus() != NetworkStatus.NotReachable) && Reachability.IsHostReachable("www.google.com");