コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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;
                }
            }
        }