private async Task ProcessDirectoriesAsync(int num, ConcurrentQueue <string> directories) { await Task.Delay(TimeSpan.FromMinutes(num)); bool needToProcess = directories.TryDequeue(out string directory); while (needToProcess) { string processedContainer = await _directoryProcessor.ProcessDirectoryAsync(directory); if (!string.IsNullOrWhiteSpace(processedContainer)) { _processedDirectoriesDict.TryAdd(processedContainer, true); } needToProcess = directories.TryDequeue(out directory); } }
public override async Task Execute() { while (!_apiIsReady) { WebRequest request = WebRequest.Create($"http://localhost:{Program.Port}/api/isalive"); try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); _apiIsReady = response != null && response.StatusCode == HttpStatusCode.OK; if (!_apiIsReady) { await Task.Delay(TimeSpan.FromSeconds(1)); } } catch { await Task.Delay(TimeSpan.FromSeconds(1)); } } await _directoryProcessor.ProcessDirectoryAsync(); await _log.WriteInfoAsync(nameof(PeriodicalHandler), nameof(Execute), "Directory is processed."); }