C# WebClient 无法设置超时时间的解决办法
2015-06-24 Shane Jhu
WebClient 无法设置请求超时时间,在执行请求时遇到网络不通等情况会很大几率造成app挂起。
我们可以从WebClient派生一个新的类,重载GetWebRequest方法。
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
/// <summary>
/// 为WebClient增加超时时间
/// <para>从WebClient派生一个新的类,重载GetWebRequest方法</para>
/// </summary>
public class NewWebClient : WebClient
{
private int _timeout;
/// <summary>
/// 超时时间(毫秒)
/// </summary>
public int Timeout
{
get
{
return _timeout;
}
set
{
_timeout = value;
}
}
public NewWebClient()
{
this._timeout = 60000;
}
public NewWebClient(int timeout)
{
this._timeout = timeout;
}
protected override WebRequest GetWebRequest(Uri address)
{
var result = base.GetWebRequest(address);
result.Timeout = this._timeout;
return result;
}
}使用与WebClient相同的调用方式调用建好的类,就可以设置超时时间:
NewWebClient myWebClient = new NewWebClient(30 * 60 * 1000);
byte[] myDataBuffer = myWebClient.DownloadData(url);
string result = Encoding.GetEncoding("GB2312").GetString(myDataBuffer);测试可用,欢迎各位反馈。
本文由lenashane.com原创,转载请注明出处:查看原文
如果觉得文章还不错,请点个赞吧

