Rx.NET - 一次下载两个文件

时间:2014-07-09 11:32:45

标签: c# system.reactive

我试图下载文件列表(使用被动扩展名),一次最多保持两个并行下载。

到目前为止,我没有遇到过工作样本。

目前最接近的是:

How can I limit Parallel.ForEach?

但我想通过Rx.net做同样的事情 任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:3)

Observable.Merge采用maxConcurrent参数,允许您限制维护的并行订阅数量。所以你可以这样做:

public class DownloadResult { /*...*/ }

public Task<DownloadResult> DownloadFileAsync(string path) { /*...*/ }


public IObservable<DownloadResult> DownloadFiles(int maxConcurrent, string[] paths)
{
    return paths
        .Select(path => Observable.FromAsync(() => DownloadFileAsync(path)))
        .Merge(maxConcurrent: maxConcurrent);
}