C#用WebClient下载File时操作超时的问题

这个是原代码:

System.Net.WebClient wc = new System.Net.WebClient();

wc.OpenRead("http://patrickkroft.com/mp3/Pearl.mp3");

Int64 bytes_total= Convert.ToInt64(wc.ResponseHeaders["Content-Length"])

MessageBox.Show(bytes_total.ToString() + " Bytes");

以上的代码实在是很不负责,坑爹的写的。改进成下面:

System.Net.WebClient wc = new System.Net.WebClient();

Stream stream = wc.OpenRead(folderEntity.URI);
Int64 bytes_total = Convert.ToInt64(wc.ResponseHeaders["Content-Length"]);
stream.Close(); //以及释放内存
wc.Dispose();//及时释放,避免第二次下载时, 奇怪的"操作超时"的问题

用WebClient异步下载文件,但是如果下载过程中出现异常(例如URL不存在、网络中断等),将不会报错,照样下载0字节文件,并且下载0字节完成后同样激活DownloadFileCompleted事件。

我想在异步下载过程中捕获异常,如果URL不存在则激活某个事件跳转到另外一个分支去执行程序(例如弹出对话框提示下载失败)

请问应该怎么捕获DownloadFileAsync的异常?

DownloadFileAsync
在下载失败时的确会抛出WebException异常,但是用try...catch是捕获不到这个异常的,这个异常由.NET自动传给了
DownloadFileCompleted事件里的AsyncCompletedEventArgs参数e,由e.error获得这个异常。

时间: 2024-08-03 02:22:11

C#用WebClient下载File时操作超时的问题的相关文章

silverlight webclient实现上传、下载、删除操作

1.上传 1 private void Button_Click_1(object sender, RoutedEventArgs e) 2 { 3 OpenFileDialog openFileDialog = new OpenFileDialog() 4 { //弹出打开文件对话框要求用户自己选择在本地端打开的图片文件 5 Filter = "Jpeg Files (*.jpg)|*.jpg|All Files(*.*)|*.*", 6 Multiselect = false //

sqlserver错误"试图扩大物理文件时,MODIFY FILE 遇到操作系统错误 112(磁盘空间不足。)。"处理

正常还原的时候报错: Microsoft SQL-DMO (ODBC SQLState: 42000)---------------------------试图扩大物理文件时,MODIFY FILE 遇到操作系统错误 112(磁盘空间不足.).未能创建一个或多个文件.请考虑使用 WITH MOVE 选项来标识有效位置.RESTORE DATABASE 操作异常终止. 但硬盘空间很足够! -------------------------------------------------------

ie下ajaxSubmit提交form中包含file时,提示下载(后台采用struts2)

原因:主要是后台传回的数据的响应方式,默认是application/***,要将其修改成text/html,这样返回的是字符串,到前台,如果需要可以将其转成所需格式 解决方案: 前台 提交前的校验 1 var validateForm = function() { 2 var flag = true; 3 if (window.ActiveXObject) { 4 IE下的处理……修改flag11 } else if (window.MessageEvent && !document.ge

尝试打开或创建物理文件时,CREATE FILE 遇到操作系统错误 5

执行 Transact-SQL 语句或批处理时发生了异常. (Microsoft.SqlServer.ConnectionInfo)尝试打开或创建物理文件时,CREATE FILE 遇到操作系统错误 5(拒绝访问.) 解决方法:设置源文件的安全属性为当前用户可以访问的权限.(属性-安全)

WPF 窗体中获取键盘和鼠标无操作时的超时提示

原文:WPF 窗体中获取键盘和鼠标无操作时的超时提示 通过调用Windows API中的GetLastInputInfo来获取最后一次输入的时间 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windo

File 文件操作类 大全

File  文件操作类  大全 许多人都会对文件操作感到很难  我也是  但是一个好的项目中必定会涉及到文件操作的 文件的复制 粘贴  等等等 公司大佬写了 一个文件操作的工具类 感觉还是棒棒的啦   代码如下 : 1 /** 2 * Copyright © 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved. 3 */ 4 package

create file遇到操作系统错误5拒绝访问

create file遇到操作系统错误5拒绝访问当用C#程序执行SQL创建一个数据库时出现错误:CREATE FILE 遇到操作系统错误 5(拒绝访问. 原因及解决方法如下:这是因为SQL Server的启动帐户(一般是system或某个操作系统管理员),对C盘没有创建文件的权限.运行services.msc,在服务管理器里找到SQL Server服务,然后看“登录”选项卡,选中本地用户并重启服务. 或者启动Sql server configuration Manager里面修改SQL Serv

廖雪峰js教程笔记14 file文件操作

在HTML表单中,可以上传文件的唯一控件就是<input type="file">. 注意:当一个表单包含<input type="file">时,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才能正确编码并以multipart/form-data格式发送表单的数据. 出于安全考虑,浏览器只允许用户点击<input type="file">来选择本地

BPM设定操作超时

修改Web.config文件,找到authentication结点,将mode属性修改为Forms,在该结点下的forms结点增加timeout属性,单位分钟,具体如下:<authentication mode="Forms">      <forms loginUrl="YZSoft/login/" cookieless="UseCookies" timeout="30" path="/"