会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
simon
博客园
首页
新随笔
联系
订阅
管理
给WebClient类加上超时时间
WebClient类是重写了WebRequest方法得到的DownloadFile,DownloadData,WebRequest类本来的Timeout属性的,但WebClient竟没给加
这个有时运行一次要很长时间,没法自动结束,不爽,重写
/// <summary> /// 设置请求超时 /// </summary> private int _Timeout=30; public int Timeout { get { return _Timeout*1000; } set { _Timeout=value; } } /// <summary> /// 下载文件到本地 /// </summary> /// <param name="?"></param> public void DownloadFile(string address, string fileName) { FileStream stream1 = null; bool flag1 = false; try { stream1 = new FileStream(HttpContext.Current.Server.MapPath(fileName), FileMode.Create, FileAccess.Write); WebRequest request1 = WebRequest.Create(address); request1.Timeout=Timeout;//加上超时时间 //request1.Credentials = this.Credentials; //this.CopyHeadersTo(request1); WebResponse response1 = request1.GetResponse(); //this.m_responseHeaders = response1.Headers; long num1 = response1.ContentLength; num1 = ((num1 == -1) || (num1 > 0x7fffffff)) ? ((long) 0x7fffffff) : num1; byte[] buffer1 = new byte[Math.Min(0x2000, (int) num1)]; using (Stream stream2 = response1.GetResponseStream()) { int num2; do { num2 = stream2.Read(buffer1, 0, buffer1.Length); stream1.Write(buffer1, 0, num2); } while (num2 != 0); } flag1 = true; } catch (Exception exception1) { throw new WebException("net_webclient", exception1); } finally { if (stream1 != null) { stream1.Close(); stream1 = null; } if (!flag1) { try { File.Delete(fileName); } catch { } } } }
http://www.hubro.net/item/878/
posted on
2007-02-12 13:43
mbskys
阅读(
2199
) 评论(
0
)
收藏
举报
刷新页面
返回顶部