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.");
        }