0

私のwinformsアプリでは、システムがインターネットに接続されているかどうかを確認する必要があります. 現在、私は使用しています

        try
        {
            Dns.GetHostEntry("www.something.com");
            return true;
        }
        catch (Exception)
        {
            return false;
        }

しかし、これは私には当てはまりません。システムがインターネットに接続されていない場合 (タイムアウトのため)、アプリケーションの起動に 2 分以上かかります。代わりに WMI コマンドを使用できるかどうか疑問に思っていましたか?

4

3 に答える 3

2

このクラスを使用して、ユーザーが Dsl Modem で接続している場合、インターネット接続を確認します。以下のコードでは、インターネット接続を認識できません。

NetworkInterface.GetIsNetworkAvailable()

しかし、このクラスはこれを解決できます。

class InternetConnectionChecker
{
    private bool _connectingFlag = false;
    private Thread _th;

    #region Ping Google To Test Connect Or Disconnect
    private string Ping()
    {
        try
        {
            const string remoteMachineNameOrIP = "173.194.78.104";
            var ping = new Ping();
            var reply = ping.Send(remoteMachineNameOrIP, 5);
            var sb = new StringBuilder();
            sb.Append(reply.Status.ToString());
            return sb.ToString();
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }
    #endregion

    #region Connecting Cheker Thread
    private void ConCheck()
    {
        var status = Ping();
        _connectingFlag = status == "Success" || status == "TimedOut";
    }

    public bool ConnectingCheker()
    {
        _th = new Thread(ConCheck);
        _th.Start();
        return _connectingFlag;
    }
    #endregion
}

使用する //グローバル インスタンスの作成を忘れないでください InternetConnectionChecker

    InternetConnectionChecker _connectionChecker = new     InternetConnectionChecker();

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {           
        btn1.Content = _connectionChecker.ConnectingCheker();
    }
于 2013-05-09T06:59:20.387 に答える
0

WMI についてはわかりませんが、System.Net.NetworkInformation名前空間で役立つ .NET Framework クラスがいくつかあります。特に、NetworkInterface.GetIsNetworkAvailable()ネットワーク接続 (必ずしもインターネットとは限らない) が利用可能かどうかがわかります。同じ名前空間で、このPingクラスには、非同期の ping 要求を送信するためのメソッドや、タイムアウト パラメーターを持つメソッドがいくつかあります。

于 2013-05-09T06:22:06.780 に答える