public override void Start() { if (State == STATE.RUNNING) { return; } State = STATE.RUNNING; logger.Info("Start"); FrameWrapper?.Start(); cancellationTokenSource = new CancellationTokenSource(); cancellationToken = cancellationTokenSource.Token; receiverTask = clientProvided ? Task.Run(ReceiveWorker, cancellationToken) : Task.Run(ConnectWorker, cancellationToken); dataRateTimer = new Timer(OnDataRate, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)); }