Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NetworkChange.NetworkAddressChanged事件停止工作_C#_.net_Winapi_Networking_Wmi - Fatal编程技术网

C# NetworkChange.NetworkAddressChanged事件停止工作

C# NetworkChange.NetworkAddressChanged事件停止工作,c#,.net,winapi,networking,wmi,C#,.net,Winapi,Networking,Wmi,我使用这种简单的方法来检测网络连接/断开事件: NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged); NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAva

我使用这种简单的方法来检测网络连接/断开事件:

NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);

...

static void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
    RaiseNewtorkChange();
}

static void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
    RaiseNewtorkChange();
}

static void RaiseNewtorkChange()
{
    ...
}
问题是,有时
NetworkAddressChanged
事件在被多次触发后停止工作。有人知道为什么会这样吗


或者,是否有其他方法可以使用C#或C/C++处理网络连接/断开事件。也许Windows API或WMI中有这样的功能?我需要关于LAN/WiFi网络连接/断开连接的通知,无需轮询。

在我看来,您需要使用

查看函数,尤其是此通知:

WLAN\u通知\u来源\u ACM:
注册自动配置模块生成的通知
Windows XP与SP3和 适用于带SP2的Windows XP的无线LAN API:仅适用于 wlan\u通知\u acm\u连接\u完成和 wlan\U通知\U acm\U断开连接通知可用


免责声明:我过去使用过本机Wifi API,但我从未使用过此特定功能。

谢谢,这可能对Wifi有所帮助,但我正在寻找适用于所有网络类型的通用解决方案,包括LAN.FWIW,这很可能是您看到它“停止工作”的原因是因为在
RaiseNetworkChange()
处理程序(以及任何下游代码)中的某个地方引发了异常。为什么?请阅读以下内容: