3

インターネットチェックのために、以下のコード行を書きました。

bool isAvailable = NetworkInterface.GetIsNetworkAvailable();
             if (isAvailable == true)
             {
}

ネットが利用できない場合、上記の行は常に true を返します。インターネット接続を確認する方法を教えてください。

4

4 に答える 4

2

NetworkInterfaceTypeを確認してください。インターネットが利用可能な場合は、「なし」以外にする必要があります

return (Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType 
!= Microsoft.Phone.Net.NetworkInformation.NetworkInterfaceType.None);

vjsrinathによる参照回答https : //stackoverflow.com/questions/8341169/how-to-check-internetconnection-in-wp7

お役に立てれば。

于 2012-06-22T11:10:21.740 に答える
1

あなたも試すことができます、

bool isAvailable = Microsoft.Phone.Net.NetworkInformation.DeviceNetworkInformation.IsNetworkAvailable;
于 2012-06-22T11:14:55.233 に答える
0
     Always check this in a thread, it takes some time        
    internal static bool IsNetworkAvailable()
    {
        bool _bhasNetworkConnection = false;
        try
        {
            _bhasNetworkConnection = (NetworkInterface.NetworkInterfaceType != NetworkInterfaceType.None);
        }
        catch
        {
            _bhasNetworkConnection = false;
        }

        return _bhasNetworkConnection;
    }
于 2012-06-22T11:51:40.557 に答える
0

UI スレッドのチェックNetworkInterface.NetworkInterfaceTypeインは、ブロッキング コールであるため「危険」です。この呼び出しには最大 20 秒かかる可能性があります...

非ブロッキング呼び出しを行うには、次のメソッドを使用します。

public static void IsConnected(Action<bool> completed)
{
    ThreadPool.QueueUserWorkItem(o =>
    {
        var type = NetworkInterface.NetworkInterfaceType;
        completed(type != NetworkInterfaceType.None);
    });
}

https://xp-dev.com/svn/mytoolkit/MyToolkit.Wp8/Networking/NetworkState.csを参照してください(私のプロジェクト ページから)

アクションで UI を変更したい場合はcompleted、UI スレッドでロジックを実行する必要があります。例えば:

NetworkState.IsConnected(connected => {
    if (connected)
    {
        Deployment.Current.Dispatcher.BeginInvoke(delegate { 
            // TODO add your UI logic
        });
    }
});

多くの接続チェックが必要な場合NetworkStateTrackerは、私のプロジェクトである をチェックしてください。

https://xp-dev.com/svn/mytoolkit/MyToolkit.Wp8/Networking/NetworkStateTracker.cs

于 2012-06-23T14:20:10.420 に答える