private void Config() { ProgressBarPerform = new KeyValuePair<bool, int>(true, 100); //прочитаем из реестра guid последнего использованого адаптера, если такового нет оставим пустое и будем ждать пока пользователь выберет на комбобоксе нужный string adaptGUID = String.Empty; try { adaptGUID = (string)RegistryWorker.GetKeyValue<string>(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, VentsConst._LASTADPTGUID); } catch (System.IO.IOException) { } catch (Exception ex) { _log.Error(ex.Message + " (чтение из реестра)"); VentsTools.currentSettingString = "Ошибка чтения реестра"; } if (adaptGUID == String.Empty) { VentsTools.currentSettingString = "Выберите сетевой адаптер"; Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged += new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended))); _cfgthread.Suspend(); Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged -= new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended))); } else { int index = 0; foreach (NetworkAdapters adp in comboBoxAdapters.ItemsSource) { if (adaptGUID == adp.GUID) { Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectedIndex = index)); break; } index++; } if ((bool)Dispatcher.Invoke(new Func<bool>(() => comboBoxAdapters.SelectedIndex == -1))) { _log.Info(String.Format("Сетевой адаптер GUID={0} недоступен", adaptGUID)); VentsTools.currentSettingString = "Последний использованный адаптер недоступен, выберите другой"; VentsTools.currentSettingString = "Выберите сетевой адаптер"; Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged += new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended))); _cfgthread.Suspend(); Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged -= new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended))); } } Vips = GetIPSettings((string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID))); bool state1 = false; bool state2 = false; bool state3 = false; NetworkManagement NM = new NetworkManagement(); //Получим текущие настройки на машине, для wincos network запишем дефолтные try { if (Vips.belsIP == null) Vips.belsIP = NM.GetIP(ref state1, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.belsMask == null) Vips.belsMask = NM.GetSubnetMask(ref state2, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.belsGate == null) Vips.belsGate = NM.GetGateway(ref state3, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.wincIP == null) Vips.wincIP = VentsConst._DEFAULTWINCOSIP; if (Vips.wincMask == null) Vips.wincMask = VentsConst._DEFAULTWINCOSMASK; if (Vips.wincGate == null) Vips.wincGate = VentsConst._DEFAULTWINCOSGATEWAY; } catch (Exception ex) { _log.Error(ex); } Dispatcher.Invoke(new Action(() => { belsIPadr.IsEnabled = true; belsMask.IsEnabled = true; belsGate.IsEnabled = true; wincIPadr.IsEnabled = true; wincMask.IsEnabled = true; wincGate.IsEnabled = true; applyBelsbutt.IsEnabled = true; applyWincbutt.IsEnabled = true; })); //загрузим последнюю нажатую кнопку string applyButtonClicked = String.Empty; try { applyButtonClicked = RegistryWorker.GetKeyValue<string>(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, VentsConst._LASTAPPLYBUTTONCLICKED); } catch (System.IO.IOException) { } catch (Exception ex) { _log.Error(ex.Message + " (чтение из реестра)"); VentsTools.currentSettingString = "Ошибка чтения реестра"; } if (applyButtonClicked == "BELSOLOD") Dispatcher.Invoke(new Action(() => { belsRect.Stroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")); belsRect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")); })); else if (applyButtonClicked == "WINCOS") Dispatcher.Invoke(new Action(() => { wincRect.Stroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")); wincRect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")); })); else { VentsTools.currentSettingString = "Выберите сеть для работы"; ProgressBarPerform = new KeyValuePair<bool, int>(false, 100); return; } VentsTools.currentSettingString = String.Format("Последние использованые настройки: {0}", applyButtonClicked == "BELSOLOD" ? "Сеть Белсолод" : "Сеть Wincos"); ProgressBarPerform = new KeyValuePair<bool, int>(false, 100); }
private void comboBoxAdapters_SelectedIndexChanged(object sender, SelectionChangedEventArgs e) { if (_cfgthread.ThreadState == ThreadState.Running || _cfgthread.ThreadState == ThreadState.Suspended) return; else { bool state = false; NetworkManagement NM = new NetworkManagement(); Vips = GetIPSettings((comboBoxAdapters.SelectedItem as NetworkAdapters).GUID); if (Vips.belsIP == null) Vips.belsIP = NM.GetIP(ref state, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.belsMask == null) Vips.belsMask = NM.GetSubnetMask(ref state, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.belsGate == null) Vips.belsGate = NM.GetGateway(ref state, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.wincIP == null) Vips.wincIP = VentsConst._DEFAULTWINCOSIP; if (Vips.wincMask == null) Vips.wincMask = VentsConst._DEFAULTWINCOSMASK; if (Vips.wincGate == null) Vips.wincGate = VentsConst._DEFAULTWINCOSGATEWAY; } }