2014-09-25 64 views
-3

當我嘗試調用DownloadFileAsync時,我的程序崩潰,出現錯誤「WebClient不支持併發I/O操作」。我應該怎麼做才能解決這個問題?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]); 
     } 
+0

是否有錯誤信息...?你是否試圖讓我們調試你的代碼? :P – 2014-09-25 21:32:26

+0

在IntelliTrace中,它表示:異常:引發:「WebClient不支持併發I/O操作。」 (System.NotSupportedException) 拋出了System.NotSupportedException:「WebClient不支持併發I/O操作。」 – 2014-09-25 21:34:34

回答

0

您需要爲每次下載使用新的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]); 
} 

或者你可以「鏈」的下載,並開始在單一網絡客戶端的DownloadFileCompleted事件下一個。