2015-07-06 9 views
0

我想从这个网址DownloadFile工作,DownloadFileAsync得0字节的文件

https://github.com/msysgit/msysgit/releases/download/Git-1.9.5-preview20150319/Git-1.9.5-preview20150319.exe 

我做到了使用DownloadFile下载git的,它的工作确定。

现在我尝试使用Async方法来做,但它下载0字节文件。下面的代码:

public void downloadFile(string urlAddress, string location) 
{ 
    using (var downloadClient = new WebClient()) 
    { 
     downloadClient.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(Completed); 
     downloadClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 

     Uri URL = urlAddress.StartsWith("http://", StringComparison.OrdinalIgnoreCase) ? new Uri(urlAddress) : new Uri("http://" + urlAddress); 
     _downloadStopWatch.Start(); 
     try 
     { 
      downloadClient.DownloadFileAsync(URL, location); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

     _downloadStopWatch.Stop(); 

     while (downloadClient.IsBusy) { } 
    } 
} 

其中:

private string _location = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\test.exe"; 

而且urlAddress键入到文本框,并通过textbox.text

我检查已完成处理程序和它说完成。

为什么我得到0字节文件?

+1

搞怪,你的代码不说明URL,因为它使用https方案工作。如果我将其更改为http,它按预期工作... –

+0

哇,我错过了。更正后,它现在可以工作,谢谢。 – Januszoff

回答

0

已完成的方法参数AsyncCompletedEventArgs返回错误The remote name could not be resolved: 'https'

在这种情况下,你应该回落到http

根据您的目标框架,你也可以使用await downloadClient.DownloadFileTaskAsync(urlAddress, location);

+0

确实,使用await是这些天去的方式。 –