public async Task InitLoopAsync(TimeSpan timeout) { if (Logging.IsEnabled) { Logging.Enter(this, timeout, $"{nameof(InitLoopAsync)}"); } CancellationTokenSource oldTokenSource = _cancellationTokenSource; _cancellationTokenSource = new CancellationTokenSource(); CancellationToken newToken = _cancellationTokenSource.Token; oldTokenSource?.Cancel(); DateTime refreshOn = await _amqpIoTCbsLink .SendTokenAsync( _amqpIoTCbsTokenProvider, _connectionString.AmqpEndpoint, _audience, _audience, AccessRightsStringArray, timeout) .ConfigureAwait(false); if (refreshOn < DateTime.MaxValue) { StartLoop(refreshOn, newToken); } if (Logging.IsEnabled) { Logging.Exit(this, timeout, $"{nameof(InitLoopAsync)}"); } }