每当我点击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获取文件的文本,因此我需要进行该调用。
答案 0 :(得分:1)
您的代码至少有一个可能是问题根源的问题:
您在using
块内执行异步下载。我真的不知道如果在使用块的范围留下时下载仍在运行会发生什么,但我想它已被取消。您应该使用DownloadFile
代替DownloadFileAsync
来避免此问题
另外,请在使用普通WebClient
课程而不是MyClient
课程时检查是否有效。