【问题标题】:DownloadFileAsync downloads a 0KB fileDownloadFileAsync 下载一个 0KB 的文件
【发布时间】:2018-01-06 05:46:01
【问题描述】:

我的代码如下所示:

    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 并执行括号内的代码。我只是假设

【问题讨论】:

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

标签: .net .net-3.5 console-application


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多