public async void OptionCheckedAsync(BoolOption newOption) { using (_isBusy.BusyMode) { // Because i dont want user to shift between two options till 'Yes' will be pressed... if (newOption != _lastFallbackedOption) { var doChange = await UserInteracting.RequestAcknowledgementAsync("Смена длительности импульса", "Данные предыдущих замеров будут стерты.-NL-NLПродолжить?"); if (doChange) { _calibrator.DiscardShockCalibration(); _lastFallbackedOption = null; } else { newOption.IsChecked = false; _lastFallbackedOption = _previousCheckedOption; _previousCheckedOption.IsChecked = true; // this line triggers method to run again, so it should be the last } _previousCheckedOption = ImpulseDurations.Single(o => o.IsChecked); } } }
public async Task OnReadAsync(AsyncOperationInfo operationInfo) { if (_dump != null && !await UserInteracting.RequestAcknowledgementAsync("Начать загрузку дампа Flash-памяти", "Предыдущий дамп будет стерт из памяти программы-NL-NLПродолжить?")) { return; } operationInfo.Progress.Report(0); var formats = new Dictionary <RUSDeviceId, IEnumerable <IDataEntity> >(); switch (formatSource) { case FormatSource.MODULE: { var format = await _device.ReadAsync(Command.DATA_PACKET_CONFIGURATION_FILE, DeviceOperationScope.DEFAULT, operationInfo); if (format.Status != ReadStatus.OK) { Logger.LogErrorEverywhere("Не удалось получить формат данных"); return; } formats.Add(_device.Id, format.Entities); } break; case FormatSource.DEVICES: { foreach (var device in _device.Children.Concat(_device)) { var format = await device.ReadAsync(Command.FLASH_DATA_PACKET_CONFIGURATION, DeviceOperationScope.DEFAULT, operationInfo); if (format.Status == ReadStatus.OK) { formats.Add(device.Id, format.Entities); } else { Logger.LogWarningEverywhere($"Не удалось получить формат данных для устройства: {device.Id}"); } } } break; default: throw new NotSupportedException(); } if (formats.Count == 0) { Logger.LogErrorEverywhere($"Ни один из требуемых форматов не был получен"); return; } var reader = await FlashStreamReader.CreateAsync(_device.Id, formats, _parserFactory, operationInfo); var result = await _device.ReadAsync(Command.DOWNLOAD_FLASH, reader.FlashReadOperationScope, operationInfo); if (result.Status == ReadStatus.OK) { await reader.FinishAsync(operationInfo); _dump = reader; } }