我试图下载文件列表(使用被动扩展名),一次最多保持两个并行下载。
到目前为止,我没有遇到过工作样本。
目前最接近的是:
How can I limit Parallel.ForEach?
但我想通过Rx.net做同样的事情 任何帮助都会非常感激。
答案 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);
}