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不支持并发I/O错误

每次下载都需要使用一个新的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事件中启动下一个下载。