public Task ConnectAsync() { IsConnected = true; _worker = _workerController.StartWorker(_config.UpdateDataPeriod, WorkMethod); return(Task.Delay(_config.ConnectDelay)); }
/// <inheritdoc /> public override void OnOpen() { WeekDayModel weekDay = _dayOfWeekMapper.ToModel(DateTime.Now.DayOfWeek); WeekDaySelect(weekDay); _updateColorWorker = _workerController.StartWorker(UpdateScheduleColors, _updateColorInterval, false); }
public void Start() { Stop(); var interval = new TimeSpan(Math.Max(_options.WorkerInterval.Ticks, WorkerMinimumInterval.Ticks)); _logger.Info($"{GetType().Name}: запускается воркер с интервалом {interval} (минимально возможный интервал: {WorkerMinimumInterval})"); _worker = _workerController.StartWorker(() => CheckApartments().GetAwaiter().GetResult(), interval); }
/// <summary> /// Запускает контроллера /// </summary> public void Start() { if (!_processingPeriod.HasValue) { throw new InvalidOperationException($"Необходимо сначала инициализировать контроллер методом {nameof(Init)}"); } _worker = _workerController.StartWorker(_processingPeriod.Value, async() => await SyncAsync().ConfigureAwait(false)); _isProcessing = true; IsPaused = false; }
public async Task ConnectAsync() { AssertInitParams(); if (IsConnected) { throw new InvalidOperationException($"{GetType().Name} уже подключен к устройству"); } try { // очистим перед подключением все накопленные ошибки while (_lastExceptions.TryDequeue(out _)) { } var monitorIpAddress = await DiscoverMonitorIpAddressAsync() .ConfigureAwait(false); _tcpClient = new TcpClient(); await _tcpClient.ConnectAsync(monitorIpAddress, _initParams.MonitorTcpPort) .ConfigureAwait(false); _stream = _tcpClient.GetStream(); _mitar = new MitarMonitorDataReceiver(_stream); _mitar.Start(); // ReSharper disable once HeapView.CanAvoidClosure _syncWorker = _workerController.StartWorker(_initParams.UpdateDataPeriod, async() => { try { //todo сюды бы токен отмены await UpdateDataAsync() .ConfigureAwait(false); } catch (Exception ex) { IsConnected = false; _workerController.CloseWorker(_syncWorker); _lastExceptions.Enqueue(ex); } }); IsConnected = true; } catch (SocketException e) { IsConnected = false; throw new DeviceConnectionException("Ошибка подключения к кардиомонитору", e); } catch (ObjectDisposedException e) { IsConnected = false; throw new DeviceConnectionException("Ошибка подключения к кардиомонитору", e); } catch (Exception e) { IsConnected = false; throw new DeviceProcessingException("Ошибка подключения к кардиомонитору", e); } }
public async Task ConnectAsync() { AssertInitParams(); if (IsConnected) { throw new InvalidOperationException($"{GetType().Name} уже подключен к устройству"); } if (!IpEndPointParser.TryParse(_config.BedIpEndpoint, out _bedIpEndPoint)) { throw new ArgumentException("Не верно указан адрес подключения к кровати. Требуемый формат - ip:port"); } try { // очистим перед подключением все накопленные ошибки while (_lastExceptions.TryDequeue(out _)) { } await InternalDisconectAsync().ConfigureAwait(false); _udpSendingClient = new UdpClient { Client = { ReceiveTimeout = (int)_config.Timeout.TotalMilliseconds, SendTimeout = (int)_config.Timeout.TotalMilliseconds } }; _udpReceivingClient = new UdpClient(_bedIpEndPoint.Port) { Client = { ReceiveTimeout = (int)_config.Timeout.TotalMilliseconds, SendTimeout = (int)_config.Timeout.TotalMilliseconds } }; _udpSendingClient.Connect(_bedIpEndPoint); _udpReceivingClient.Connect(_bedIpEndPoint); IsConnected = true; await UpdateRegistersValueAsync() .ConfigureAwait(false); _syncWorker = _workerController.StartWorker(_config.UpdateDataPeriod, async() => { if (_initialisingStatus == DeviceIsInitialising) { return; } try { //todo сюды бы токен отмены await UpdateRegistersValueAsync() .ConfigureAwait(false); } catch (Exception e) { IsConnected = false; _workerController.CloseWorker(_syncWorker); _lastExceptions.Enqueue(e); } }); } catch (DeviceConnectionException) { IsConnected = false; throw; } catch (SocketException e) { IsConnected = false; throw new DeviceConnectionException("Ошибка подключения к инверсионному столу", e); } catch (ObjectDisposedException e) { IsConnected = false; throw new DeviceConnectionException("Ошибка подключения к инверсионному столу", e); } catch (Exception e) { IsConnected = false; throw new DeviceProcessingException("Ошибка в ходе обработки данных от инверсионного стола", e); } }