C# 指示VPN连接状态WPF
我一直想知道如何在WPF中显示VPN(显示VPN)连接状态。因为我还没有找到这个问题的任何直接答案,所以我自己开始尝试,并让它发挥作用。然而,我在想,这是最有效的方法,还是专家会提出其他建议 以下是MainProcess.cs中的主要方法:C# 指示VPN连接状态WPF,c#,wpf,C#,Wpf,我一直想知道如何在WPF中显示VPN(显示VPN)连接状态。因为我还没有找到这个问题的任何直接答案,所以我自己开始尝试,并让它发挥作用。然而,我在想,这是最有效的方法,还是专家会提出其他建议 以下是MainProcess.cs中的主要方法: public static bool CheckForVPNInterface() { if (NetworkInterface.GetIsNetworkAvailable()) { N
public static bool CheckForVPNInterface()
{
if (NetworkInterface.GetIsNetworkAvailable())
{
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface Interface in interfaces)
{
if (Interface.OperationalStatus == OperationalStatus.Up)
{
if ((Interface.NetworkInterfaceType == NetworkInterfaceType.Ppp) && (Interface.NetworkInterfaceType != NetworkInterfaceType.Loopback))
{
_ = Interface.GetIPv4Statistics();
return true;
}
}
}
}
return false;
}
以下是MainWindow.xaml.cs中的计时器:
public async Task CheckForVPNConnectionTimeToTime()
{
while (true)
{
var delayTask = Task.Delay(3000);
Application.Current.Dispatcher.Invoke(() => {
if (MainProcess.CheckForVPNInterface() == true)
{
// Change color to available
return VPNStatus.Fill = Brushes.LightGreen;
}
//Change color to unavailable
return VPNStatus.Fill = Brushes.Red;
});
await delayTask;
}
}
public MainWindow()
{
InitializeComponent();
// check for VPN connection
_ = CheckForVPNConnectionTimeToTime();
// check for Internet connection
NetworkChange.NetworkAvailabilityChanged += OnNetworkAvailabilityChanged;
var isAvailable = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
OnNetworkAvailabilityChanged(isAvailable);
}
这里的所有内容都称为MainWindow.xaml.cs:
public async Task CheckForVPNConnectionTimeToTime()
{
while (true)
{
var delayTask = Task.Delay(3000);
Application.Current.Dispatcher.Invoke(() => {
if (MainProcess.CheckForVPNInterface() == true)
{
// Change color to available
return VPNStatus.Fill = Brushes.LightGreen;
}
//Change color to unavailable
return VPNStatus.Fill = Brushes.Red;
});
await delayTask;
}
}
public MainWindow()
{
InitializeComponent();
// check for VPN connection
_ = CheckForVPNConnectionTimeToTime();
// check for Internet connection
NetworkChange.NetworkAvailabilityChanged += OnNetworkAvailabilityChanged;
var isAvailable = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
OnNetworkAvailabilityChanged(isAvailable);
}
以下是MainWindow.xaml中的实际指示器(第一个用于Internet连接,不包括在当前范围内,第二个用于VPN连接):
一旦你找到了vpn,你不是就只想查看特定的网络接口吗?也许这更适合代码审查网站?