Rx.一次下载两个文件



我正在尝试下载一个文件列表(使用响应式扩展),同时保持最多两个并行下载。

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

到目前为止最接近的是:

如何限制Parallel.ForEach?

但是我想通过Rx.net做同样的事情

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);
}

相关内容

  • 没有找到相关文章