Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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# 指示VPN连接状态WPF_C#_Wpf - Fatal编程技术网

C# 指示VPN连接状态WPF

C# 指示VPN连接状态WPF,c#,wpf,C#,Wpf,我一直想知道如何在WPF中显示VPN(显示VPN)连接状态。因为我还没有找到这个问题的任何直接答案,所以我自己开始尝试,并让它发挥作用。然而,我在想,这是最有效的方法,还是专家会提出其他建议 以下是MainProcess.cs中的主要方法: public static bool CheckForVPNInterface() { if (NetworkInterface.GetIsNetworkAvailable()) { N

我一直想知道如何在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;
        }
    }
    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,你不是就只想查看特定的网络接口吗?也许这更适合代码审查网站?