c# - 指示 VPN 连接状态 WPF
问题描述
我一直想知道如何在 WPF 中显示 VPN(显示 VPN)连接状态。由于我还没有找到这个问题的任何直接答案,我开始自己尝试并让它工作。但是我在想这是最有效的方法还是专家会有其他建议?
这是 MainProcess.cs 中的主要方法:
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;
}
}
这里是一切都被称为 MainWindow.xaml.cs 的地方:
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 连接):
<!--SHAPES-->
<Ellipse x:Name="NetworkStatus" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="15" VerticalAlignment="Top" Width="15" RenderTransformOrigin="-1.048,0.476" Margin="489,16,0,0"/>
<Ellipse x:Name="VPNStatus" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="15" VerticalAlignment="Top" Width="15" RenderTransformOrigin="-1.048,0.476" Margin="603,16,0,0"/>
解决方案
推荐阅读
- c# - 如何在winform中的两个不同日期时间选择器中初始显示两个不同日期?
- django - 如何在 django 表单对象中传递非表单数据?
- sas - 应用 keep 和 where 一起 sas
- azure - VSTS 连续交付,无需交换插槽
- spss - 在 SPSS 统计 22 的 VARSTOCASES 的 MAKE 子命令中添加更多变量名称的快捷方式
- angularjs - @angular/router 在 angular.js 应用程序中不起作用
- javascript - JQuery客户端调整大小与加载错误/获取图像的高度宽度
- c# - 如何获取 id 的登录值并将其传递到下一页
- android - 谷歌玩游戏用户个人资料图片未加载
- mysql - 使用带有 ORDER BY 的汇总的问题