public void CurrUsage(Nics nics, int n) { _cancel = false; // ... while (!_cancel) { // do some stuff } }
private void SetNicList() { Nics.Clear(); var nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (var nic in nics) { if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet || nic.NetworkInterfaceType == NetworkInterfaceType.GigabitEthernet || nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) { var entity = new NicsEntity { Name = nic.Name, Description = nic.Description }; Nics.Add(entity); } } SelectedNicIndex = 0; }
private bool SetupHyperVSwitch() { try { // check if setup already PowerShell PS = PowerShell.Create(); //PS.Streams.Warning.DataAdded += PSWarningStreamHandler; //PS.Streams.Error.DataAdded += PSErrorStreamHandler; //PS.Streams.Information.DataAdded += PSInfoStreamHandler; // check if bitlocker is enabled PS.AddScript("manage-bde -status C:"); Collection <PSObject> results = PS.Invoke(); PS.Streams.ClearStreams(); PS.Commands.Clear(); if (results.Count == 0) { MessageBox.Show(Strings.BitLockerStatus, Strings.AboutSubtitle, MessageBoxButton.OK, MessageBoxImage.Error); } bool enabled = false; foreach (var result in results) { if (result.ToString().Contains("Protection On")) { enabled = true; break; } } if (!enabled) { MessageBox.Show(Strings.BitlockerDisabled, Strings.AboutSubtitle, MessageBoxButton.OK, MessageBoxImage.Warning); } // check if Hyper-V is enabled PS.AddScript("$hyperv = Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online"); PS.AddScript("if($hyperv.State -eq 'Enabled') { write 'enabled' }"); results = PS.Invoke(); PS.Streams.ClearStreams(); PS.Commands.Clear(); if (results.Count == 0) { MessageBox.Show(Strings.HyperVNotEnabled, Strings.AboutSubtitle, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } enabled = false; foreach (var result in results) { if (result.ToString().Contains("enabled")) { enabled = true; break; } } if (!enabled) { MessageBox.Show(Strings.HyperVNotEnabled, Strings.AboutSubtitle, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } PS.AddScript("get-vmswitch"); results = PS.Invoke(); PS.Streams.ClearStreams(); PS.Commands.Clear(); if (results.Count == 0) { MessageBox.Show(Strings.VSwitchSetupFailed, Strings.AboutSubtitle, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } foreach (var vmSwitch in results) { if (vmSwitch.ToString().Contains("(Name = 'host')")) { OutputLB += (Strings.VSwitchExists + "\n"); return(true); } } PS.AddScript($"new-vmswitch -name host -NetAdapterName '{Nics.ElementAt(SelectedNicIndex).Name}' -AllowManagementOS $true"); results = PS.Invoke(); PS.Streams.ClearStreams(); PS.Commands.Clear(); if (results.Count == 0) { MessageBox.Show(Strings.VSwitchSetupFailed, Strings.AboutSubtitle, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } // It takes about 10 seconds for the network interfaces to come back up Thread.Sleep(10000); } catch (Exception ex) { MessageBox.Show(ex.Message, Strings.AboutSubtitle, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } return(true); }