【问题标题】:C# NetworkAvailibilityChanged doesn't trigger on disconnectC# NetworkAvailibilityChanged 在断开连接时不会触发
【发布时间】:2012-10-04 21:39:42
【问题描述】:

我的目标是检测以太网电缆何时断开我正在尝试使用NetworkChange 类,但当我拔下以太网电缆时不会触发事件NetworkAvailibilityChangedNetworkAddressChanged 确实会在大约 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");
        }


    }

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    NetworkAvailabilityChanged 基于 NetworkInterface.GetIsNetworkAvailable(),它说明:

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

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

    【讨论】:

    • 看来虚拟机的网络也很重要,我有一个 VirtualBox Host-Only 网络,我必须禁用它才能让NetworkAvailabilityChanged 工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2012-11-22
    • 2014-03-08
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多