代码无法多次下载文件

时间:2011-05-10 16:02:49

标签: c# download webclient webclient-download

每当我点击GUI中的按钮时,此代码就会被执行

this.file_name = @"c:\temp\file_" + DateTime.Now.Ticks / 10000 +".pdf";

client.DownloadFileCompleted +=
                    new AsyncCompletedEventHandler(pdfDownloadComplete);

client.DownloadFileAsync(new Uri(uri), file_name);

应该下载pdf文件。它第一次单击它时工作正常,但第二次它只是在temp目录中创建一个空文件并且没有下载,我点击相同的按钮后不会发生新的事情。

我无法弄明白为什么它不会多次下载。

稍后修改

这是需要的完整代码http://pastie.org/private/y7na2f4fjdu6anzteoa

我注意到如果删除检查内容类型的下载,应用程序会毫无问题地下载文件

client.HeadOnly = true;
byte[] body = client.DownloadData(uri); // note should be 0-length
string type = client.ResponseHeaders["content-type"];
client.HeadOnly = false;

但是,我需要知道我是否从该URL获取文件的文本,因此我需要进行该调用。

1 个答案:

答案 0 :(得分:1)

您的代码至少有一个可能是问题根源的问题:
您在using块内执行异步下载。我真的不知道如果在使用块的范围留下时下载仍在运行会发生什么,但我想它已被取消。您应该使用DownloadFile代替DownloadFileAsync来避免此问题 另外,请在使用普通WebClient课程而不是MyClient课程时检查是否有效。