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并执行括号内的代码。我只是假设
答
正如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
您需要显示更多的代码来调用DownloadFileAsync。您的程序可能会在下载完成之前结束。因为这是一个控制台应用程序,所以很可能只需将其更改为普通的'DownloadFile'并在下载文件调用后将代码移动到'DownloadFileCompleted'中即可。 –