mirror of
https://github.com/collinbarrett/FilterLists.git
synced 2026-03-11 09:04:27 +00:00
consume tasks from TransformBlock so app doesn't hang
This commit is contained in:
parent
b1fb724bda
commit
878dfe6e30
1 changed files with 5 additions and 0 deletions
|
|
@ -29,15 +29,20 @@ public Handler(IMediator mediator)
|
|||
_mediator = mediator;
|
||||
}
|
||||
|
||||
// https://stackoverflow.com/a/22492731/2343739
|
||||
protected override async Task Handle(Command request, CancellationToken cancellationToken)
|
||||
{
|
||||
var downloader = new TransformBlock<ListInfo, Task>(
|
||||
l => _mediator.Send(new DownloadList.Command(l), cancellationToken),
|
||||
new ExecutionDataflowBlockOptions {MaxDegreeOfParallelism = MaxDegreeOfParallelism});
|
||||
var buffer = new BufferBlock<Task>();
|
||||
downloader.LinkTo(buffer);
|
||||
foreach (var list in request.Lists)
|
||||
await downloader.SendAsync(list, cancellationToken);
|
||||
downloader.Complete();
|
||||
await downloader.Completion;
|
||||
if (buffer.TryReceiveAll(out var tasks))
|
||||
await Task.WhenAll(tasks);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue