DownloadFileAsync 下载一个 0KB 的文件

DownloadFileAsync downloads a 0KB file

我的代码如下所示:

    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();