用于Windows8 WinRT的IsConnectedToNetwork失败

时间:2012-10-19 22:50:13

标签: c# windows-8 windows-runtime

任何人都知道查看用户是否在线/离线的好方法吗?当我使用public static bool IsConnectedToNetwork();看看它是假的还是真的似乎永远都是真的,即使我关闭我的互联网来测试它......

我错过了什么吗?

public static bool nets()
{
    bool go = 
        System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();

    if (go == false)
    {
        return false;  
    }
    return true;
}

现在,在我的初创公司中,我跑了:

var ba = nets();

if (ba == false)
{
    txtHeader.Text = "err";
}
if (ba != false)
{
    // Code
}

我也尝试过:

    public static bool IsConnectedToNetwork();

3 个答案:

答案 0 :(得分:2)

我用

public static bool IsConnectedToInternet()
{
    ConnectionProfile connectionProfile = NetworkInformation.GetInternetConnectionProfile();
    return (connectionProfile!=null && connectionProfile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess);

 }

答案 1 :(得分:0)

您可以ping几个众所周知的网址之一,看看您是否收到回复。

答案 2 :(得分:0)

我有一种看起来相当不错的方式,特别注意有时以太网似乎正在使用,即使它不在Windows 8 RTM中......这就是为什么似乎没有任何效果!

然而,做以下情况对我来说是一个不错的选择......

    var profile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();

         var interfaceType = profile.NetworkAdapter.IanaInterfaceType;
            // 71 is WiFi & 6 is Ethernet
            if (interfaceType == 71 | interfaceType == 6) 
            {
              // Run Code
            }
            /* 3G/Mobile Detect
            else if (interfaceType == 243 | interfaceType == 244)
            {
              // Run Code if you need to use a less quality feature.
            }*/
            else
            {
                txtHeader.Text = "Error, Check connection or Try connecting to the Internet...";
            }