WebClient不支持并发I/O错误
本文关键字:错误 不支持 并发 WebClient | 更新日期: 2023-09-27 18:24:26
当我尝试调用DownloadFileAsync时,我的程序崩溃,并出现错误"WebClient不支持并发I/O操作"。我该怎么解决这个问题?
WebClient klient = new WebClient();
MatchCollection matches = Regex.Matches(storage, pattern);
Match[] odkazy = new Match[matches.Count];
List<string> neco = new List<string> { };
for (int i=0;i<matches.Count;i++)
{
matches.CopyTo(odkazy, 0);
string ano = odkazy[i].ToString();
neco.Add(ano);
klient.DownloadFileAsync(new Uri(neco[i]), @"c:'picture{0}.png",i);
Debug.WriteLine(neco[i]);
}
每次下载都需要使用一个新的WebClient实例;它一次只能做一个,而你正试图用for循环快速地做一堆。在每次迭代中初始化一个新的:
for (int i=0;i<matches.Count;i++)
{
matches.CopyTo(odkazy, 0);
string ano = odkazy[i].ToString();
neco.Add(ano);
WebClient klient = new WebClient();
klient.DownloadFileAsync(new Uri(neco[i]), @"c:'picture{0}.png",i);
Debug.WriteLine(neco[i]);
}
或者,您可以"连锁"下载,并在单个web客户端的DownloadFileCompleted事件中启动下一个下载。