public async Task ExecuteAsync(DownloadMonitorCommand.Parameters parameters) { await this.ensureAuthenticated.ExecuteAsync(); var inputFolder = this.getCreatedOutputFolder.Execute(parameters.InputFolder); var outputFolder = this.getCreatedOutputFolder.Execute(parameters.OutputFolder); using var cts = CommandUtilities.CreateCommandCancellationTokenSource(); var channel = Channel.CreateUnbounded <QueuedDownloadToken>(); try { var monitorDownloadsTask = this.monitorDownloads.ExecuteAsync( channel.Writer, inputFolder, cts.Token); await this.processDownloads.ExecuteAsync( channel.Reader, targetFolder : outputFolder, generateCsv : parameters.GenerateCsv, keepBinary : parameters.KeepBinary, postProcessorPath : parameters.PostProcessor, postProcessorArguments : parameters.PostProcessorArguments, cancellationToken : cts.Token); await monitorDownloadsTask; } catch (Exception t) when(ExceptionUtilities.IsFromCancellation(t)) { // Download monitoring was cancelled. } }
public async Task ExecuteAsync(Parameters parameters) { await this.ensureAuthenticated.ExecuteAsync(); if (!parameters.Target.Exists) { throw new RecoverableException("Folder not found: " + parameters.Target.FullName); } var cts = CommandUtilities.CreateCommandCancellationTokenSource(); await this.processLocalStudyResults.ExecuteAsync(parameters.Target.FullName, !parameters.KeepOriginal, cts.Token); }