110,536
社区成员
发帖
与我相关
我的任务
分享
for (int i = 0; i < RocVariableClass.threadAmount; i++)
{
//delegateFun dgc = new delegateFun(startThread);
////listdgc.Add(dgc);//把委托代理添加到集合?
//IAsyncResult ir = dgc.BeginInvoke(dgcCallBack, dgc);//启动委托,异步可以用此
Thread threadClass = new Thread(()=>startThread());
threadClass.IsBackground = true;
threadClass.Start();
RocVariableClass.threadCount++;//线程数+1;
if (labelThreadCount != null)
{
setLabelThreadCountText();
}
}
我把委托启动换成线程启动就好用了,不知道为何....
class HttpClientClass
{
//public ManualResetEvent allDone = new ManualResetEvent(false);
public CookieContainer cc = null;
public Encoding encoding = Encoding.GetEncoding("utf-8");//默认utf-8
public string accept = "text/html, application/xhtml+xml, */*";
public string referer = null;
public string accept_language = "en-US";//zh-CN
public string user_agent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
public string content_type = "application/x-www-form-urlencoded";
public string accept_encoding = "gzip, deflate";
public string connection = "Keep-Alive";
public int timeout = 10000;
private ExceptionClass exceptionClass = new ExceptionClass();
public string getHtml(string url, CookieContainer cc)
{
HttpClient client = null;
HttpClientHandler handler = null;
HttpResponseMessage response = null;
HttpContent httpContent = null;
try
{
handler = new HttpClientHandler()
{
//Proxy = new WebProxy("114.241.183.23:18186"),
//UseProxy = true,
CookieContainer = cc,
UseCookies = true,
AllowAutoRedirect = true,
};
// ... Use HttpClient.
client = new HttpClient(handler);
#region 添加head
client.DefaultRequestHeaders.Add("Accept", accept);
if (referer != null)
{
client.DefaultRequestHeaders.Add("Referer", referer);
}
client.DefaultRequestHeaders.Add("Accept-Language", accept_language);
client.DefaultRequestHeaders.Add("User-Agent", user_agent);
//client.DefaultRequestHeaders.Add("Connection", connection);
//client.DefaultRequestHeaders.Add("Content-type", content_type);
//client.DefaultRequestHeaders.Add("Accept-Encoding",accept_encoding);
#endregion
client.Timeout = new TimeSpan(timeout * 10000);
//var byteArray = Encoding.ASCII.GetBytes("username:password1234");
//client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
MessageBox.Show("1");
try
{
response = client.GetAsync(url).Result;//这一句的问题
}
catch
{
}
MessageBox.Show("2");
httpContent = response.Content;
// ... Check Status Code
//Console.WriteLine("Response StatusCode: " + (int)response.StatusCode);//输出状态码;
// ... Read the string.
string result =httpContent.ReadAsStringAsync().Result;
// ... Display the result.
return result;//有可能返回null;
}
catch (AggregateException)//超时引发的异常
{
Console.WriteLine("threadroc:AggregateException");
return null;
}
catch(Exception e)
{
MessageBox.Show(exceptionClass.getExceptionMsg("HttpClientClass",e));
return null;
}
finally
{
if (client != null)
{
client.Dispose();
}
if (handler != null)
{
handler.Dispose();
}
if (response != null)
{
response.Dispose();
}
if (httpContent != null)
{
httpContent.Dispose();
}
}
}
}