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(),它表示:

如果任何网络接口被标记为“up”并且不是环回或隧道接口,则认为网络连接可用。

因此,如果有多个 NIC,如果有第二个 NIC(有线或无线)满足这些条件,则在拔下电缆时不会触发 NetworkAddressChanged。

于 2012-10-15T00:02:49.267 回答