我正在尝试创建代码来自动检测 VPN 连接和一般互联网连接的中断(以及当它重新连接到两者时)。
我已经使用 VpnApiClass(智能感知中的每个操作)和 NetworkChange.NetworkAvailabilityChanged 尝试了 AddHandler。NetworkChange.NetworkAvailabilityChanged 适用于 Internet 丢弃,但不适用于 VPN 丢弃。
'''''VB.NET:
Private Sub Main_Load(sender As Object, e as EventArgs) Handles MyBase.Load
Dim tmpVpn as New NpnApiClass
AddHandler tmpVpn.VpnStateNotification, AddressOf NetworkConnectionChanged
AddHandler tmpVpn.VpnEventAvailableNotification, AddressOf NetworkConnectionChanged
AddHandler NetworkChange.NetworkAvailabilityChanged, AddressOf NetworkConnectionChanged
End Sub
Private Sub NetworkConnectionChanged()
'''''Note: CommonElements is a dll file I'm referencing, function returns a boolean (True if connected, False if disconnected).
If Not CommonElements.isConnectedToNetwork_NetworkInterface() Then
Main.AddFiles.Enabled = False
Main.RemoveFiles.Enabled = False
Status.Text = "Disconnected"
Else
Main.AddFiles.Enabled = True
Main.RemoveFiles.Enabled = True
Status.Text = "Connected"
End If
End Sub
期望在与 VPN 断开连接时看到主窗体上的按钮禁用按钮并更新状态标签文本。然后启用按钮并在重新连接到 VPN 时更新状态标签文本。相反,除了从我的笔记本电脑上拔下以太网线外,它不会更新任何东西。没有错误或未处理的异常。