/// <summary> /// Syncs data at an interval defined by SYNC_INTERVAL_MINUTES. /// </summary> /// <param name="refreshToken">The initial token to be used for refreshing access tokens.</param> private async void SyncData(string refreshToken) { Logger.LogInformation("Started data sync"); if (refreshToken != null) { Logger.LogInformation($"Setting initial refresh token {refreshToken}"); _dataStorageService.ClearTokens(); _dataStorageService.SetRefreshToken(refreshToken); } // initial sync var result = await SyncBBData().ConfigureAwait(false); if (result.Contains(false)) { return; } // Sync every SYNC_INTERVAL_MINUTES var timer = new System.Timers.Timer(); timer.Interval += SYNC_INTERVAL_MINUTES * 60 * 1000; timer.Elapsed += async(sender, args) => { var result = await SyncBBData().ConfigureAwait(false); if (result.Contains(false)) { // at least one data sync task failed, stop processing timer.Stop(); } }; timer.Start(); Console.ReadLine(); // exit when input read from console }