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();
我的代码如下所示:
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();