// Основной цикл - заливка в каждый коммутатор настроек из списка SwitchList private void DownloadLoop(CancellationToken token) { foreach (EthernetSwitch ethernetSwitch in SwitchList) { //исключаем коммутаторы уже имеющие серийник (они уже были сконфигурированны) if (ethernetSwitch.Serial == null) { CurrentItemTextBox = ethernetSwitch.AddressIP;// Вывод адреса коммутатора в UI ethernetSwitch.CIDR = IPMask; if (!_networkTasks.UploadConfigStateMachine(ethernetSwitch, GetSettingsDict(), token)) { // Выводим сообщение о прерывании операции _dispatcher.BeginInvoke(new Action(() => { MessageForUser = "******"; })); break; } else { _dataRepositoryService.SaveSerialNumber(ethernetSwitch.Id, ethernetSwitch.Serial); _printerService.CommonPrintLabel(SelectedPrinter, 0, GetPrintingDict(ethernetSwitch)); } // Обновляем всю коллекцию d UI целиком _dispatcher.BeginInvoke(new Action(() => { CollectionViewSource.GetDefaultView(SwitchList).Refresh(); })); } if (token.IsCancellationRequested) { return; } } SliderIsChecked = false; // Всё! Залили настройки во все коммутаторы. Вырубаем слайдер (пололжение Off) }
private void DownloadLoop() { if (DeviceCounter < DevicesForProgramming.Count) { var device = DevicesForProgramming[DeviceCounter]; string devSerial = ""; if (device is Device device1) { devSerial = device1.Serial; if (devSerial == null)//исключаем приборы уже имеющие серийник (они уже были сконфигурированны) { _dispatcher.BeginInvoke(new Action(() => { CurrentDeviceModel = device1.Model; })); if (DevicesForProgramming[DeviceCounter].GetType() == typeof(RS485device)) { if (_serialTasks.SendConfig(DevicesForProgramming[DeviceCounter], CurrentRS485Port, DefaultRS485Address) == 1) { device1.Serial = SerialTextBox; _dataRepositoryService.SaveSerialNumber(device1.Id, device1.Serial); SerialTextBox = "";// Очищаем строку ввода серийника для ввода следующего DeviceCounter++; } else { MessageBox.Show("Устройство с адресом 127 не отвечает!"); } } else if (DevicesForProgramming[DeviceCounter].GetType() == typeof(C2000Ethernet)) { C2000Ethernet c2000Ethernet = (C2000Ethernet)DevicesForProgramming[DeviceCounter]; c2000Ethernet.Netmask = IPMask; c2000Ethernet.RemoteIpList = GetRemoteDefaultFirstIpList(); if (_serialTasks.SendConfig(c2000Ethernet, CurrentRS232Port, DefaultRS485Address) == 1) { device1.Serial = SerialTextBox; _dataRepositoryService.SaveSerialNumber(device1.Id, device1.Serial); SerialTextBox = "";// Очищаем строку ввода серийника для ввода следующего DeviceCounter++; } else { MessageBox.Show("Устройство с адресом 127 не отвечает!"); } } // Обновляем всю коллекцию в UI целиком _dispatcher.BeginInvoke(new Action(() => { CollectionViewSource.GetDefaultView(DevicesForProgramming).Refresh(); })); if (DeviceCounter >= DevicesForProgramming.Count) { DeviceCounter = 0; MessageBox.Show("Alles!"); } } else //Переходим к следующему прибру из списка { DeviceCounter++; } } } }