我正在使用DownloadFileAsyncTask
方法来下载文件。但是,当我在一个循环中执行它时,我得到一个异常,它告诉我不支持并发操作。我试图解决这个问题是这样的:如何让WebClient等到上一次下载完成?
有时它的工作原理,当迭代次数并不大(1-5),而当它运行10次或更多次我得到这个错误。 Client
这里是一个WebClient
,我创建一次。我不会在每次迭代中生成新的客户端,因为它会产生开销。 回到我说的是,如何让WebClient
在上次下载完成之前等待?这里的一个问题是为什么IsBusy
适用于少量的下载。 我使用的代码:
public IEnumerable<Task<string>> GetPathById(IEnumerable<Photo> photos)
{
return photos?.Select(
async photo =>
{
var path = await Download(Uri, Path);
return path;
});
}
我想下载多个文件,并不会阻止我的UI线程。也许还有其他方法可以做到这一点?
你为什么在同一时间在第一时间进行大量下载,如果你只是曾经打算让他们每个人等到没有其他人的工作实际上他们做他们的工作过吗?如果你只想一次只下载一个,那么一次不要启动多个;只有在前一个结束时才会出现下一个。 – Servy
。我不会在每次迭代中生成新的客户端,因为它会产生开销。 - >它真的是一个开销吗? – MistyK
@Zbigniew嗯,这是区别执行各种下载并行VS顺序。这会显着增加网络负载的密度。您是否真的想要(或能够)并行执行操作,当然取决于具体情况。 – Servy