2016-12-31 61 views
-1
private Queue<string> _downloadUrls = new Queue<string>(); 

     private void downloadFile(IEnumerable<string> urls) 
     { 
      foreach (var url in urls) 
      { 
       _downloadUrls.Enqueue(url); 
      } 

      DownloadFile(); 
     } 

     private async Task DownloadFile() 
     { 
      if (_downloadUrls.Any()) 
      { 
       WebClient client = new WebClient(); 
       client.DownloadProgressChanged += ProgressChanged; 
       client.DownloadFileCompleted += Completed; 

       var url = _downloadUrls.Dequeue(); 
       string FileName = url.Substring(url.LastIndexOf("/") + 1, 
          (url.Length - url.LastIndexOf("/") - 1)); 

       await client.DownloadFileAsync(new Uri(url), "C:\\Test4\\" + FileName); 
       return; 
      } 
     } 

的錯誤就行了:爲什麼我得到錯誤不能等待'空'?

await client.DownloadFileAsync(new Uri(url), "C:\\Test4\\" + FileName); 

我怎樣才能解決這個錯誤嗎? 爲什麼發生? 我給了我想的所有細節。

我添加的代碼的其餘部分,也許它需要。

+0

我編輯我的問題添加了其餘的代碼。將其更改爲異步任務,但仍然收到相同的錯誤。 –

回答

7

WebClient.DownloadFileAsync是基於事件的API,它早於任務和異步/等待。您需要等待WebClient.DownloadFileTaskAsync

0

的運營商的await應用到任務異步方法這意味着你可以在返回任務的方法等待。

WebClient.DownloadFileAsync確實不是返回一個任務但WebClient.DownloadFileTaskAsync呢。