我正在尝试创建代码以自动检测VPN连接和常规Internet连接(以及重新连接到这两者时)的断开状态。
我已经尝试使用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时更新状态标签文本。取而代之的是,它不会更新从笔记本电脑拉出以太网线的任何内容。没有错误或未处理的异常。