0

私の目標は、イーサネットケーブルが切断されたことを検出することです。NetworkChangeクラスを使用しようとしていますが、イーサネットケーブルを抜いてもイベントNetworkAvailibilityChangedはトリガーされません。NetworkAddressChanged約8秒でトリガーされますが、トリガーされませんNetworkAvailibilityChanged。何か足りないものはありますか?

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
            NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
        }

        void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
        {
            Console.WriteLine("NetworkChange_NetworkAvailabilityChanged");
        }

        void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
        {
            Console.WriteLine("NetworkChange_NetworkAddressChanged");
        }


    }
4

1 に答える 1

1

NetworkAvailabilityChanged は NetworkInterface.GetIsNetworkAvailable() に基づいています。

ネットワーク インターフェイスが「アップ」とマークされていて、ループバックまたはトンネル インターフェイスでない場合、ネットワーク接続は利用可能であると見なされます。

そのため、複数の NIC がある場合、それらの基準を満たす 2 つ目の NIC (ケーブルまたはワイヤレス) がある場合、ケーブルが抜かれても NetworkAddressChanged は起動しません。

于 2012-10-15T00:02:49.267 に答える