DownloadFileAsync下载一个0KB文件

问题描述:

我的代码如下所示:DownloadFileAsync下载一个0KB文件

private static WebClient wc = new WebClient; 
... 
wc.DownloadFileAsync(URL, FilePath); 
wc.DownloadProgressChanged += (s, ev) => 
{ 
    //Do stuff 
}; 
wc.DownloadFileCompleted += (s, ev) => 
{ 
    //All the rest of the code 
}; 

然而,一旦DownloadFileAsync被执行时,该程序立即关闭留下我一个0KB文件下载的文件,而不是(没有发生错误) 。 我相信它完全忽略了DownloadProgressChanged并执行括号内的代码。我只是假设

+0

您需要显示更多的代码来调用DownloadFileAsync。您的程序可能会在下载完成之前结束。因为这是一个控制台应用程序,所以很可能只需将其更改为普通的'DownloadFile'并在下载文件调用后将代码移动到'DownloadFileCompleted'中即可。 –

正如Scott Chamberlain正确指出的那样,您的程序在DownloadFileCompleted被调用之前似乎已结束。如果这个假设是正确的,在主线程中等待,直到如此:

var completed = new AutoResetEvent(false); 
wc.DownloadFileAsync(URL, FilePath); 
wc.DownloadProgressChanged += (s, ev) => 
{ 
    //Do stuff 
}; 
wc.DownloadFileCompleted += (s, ev) => 
{ 
    //All the rest of the code 
    completed.Set(); 
}; 
completed.WaitOne(); 
+0

呃。现在我明白为什么它不起作用。 – user8390205