private async void ProgressTimer_Elapsed(object sender, ElapsedEventArgs e) { if (_downloadProgressCache.Values.Any(i => i.Running)) { wasAnyDownloadIsRunning = true; await _downloadProgressProvider.ReportProgress(); await _textProvider.Writer.WriteLineAsync(); } else if (wasAnyDownloadIsRunning) { wasAnyDownloadIsRunning = false; await _downloadProgressProvider.ReportProgress(); } }
public async Task Run(CancellationTokenSource cts) { var line = string.Empty; while (!cts.IsCancellationRequested) { line = Reader.ReadLine(); switch (line) { case "exit": cts.Cancel(); break; case "file": var filename = Reader.ReadLine(); var flinks = await _linksProvider.GetLinks(new FileInfo(filename)); foreach (var flink in flinks) { _linksCache.Add(flink, cts.Token); } break; case "progress": await _downloadProgressProvider.ReportProgress(); break; case "cancel": var key = Reader.ReadLine(); await _fileDownloader.CancelDownload(key); break; case "stats": await _downloadProgressProvider.ReportStatistics(); break; case "history": await _downloadProgressProvider.ReportHistory(); break; case "monitor": var mcommand = Reader.ReadLine(); switch (mcommand) { case "start": _downloadProgressMonitor.StartMonitor(); break; case "stop": _downloadProgressMonitor.StopMonitor(); break; default: Writer.WriteLine("Unknown command. Type \"help\" for available commands."); break; } break; case "help": PrintHelp(); break; case "link": var link = Reader.ReadLine(); _linksCache.Add(link, cts.Token); break; default: Writer.WriteLine("Unknown command. Type \"help\" for available commands."); break; } } }