问题描述
protectedvoidbtn_Single2_Click(objectsender,EventArgse){try{if(txtSingle2.Text.Trim()==""){return;}M_BaseInfomodel=newB_BaseInfo().SelectOneBaseInfo_List(Convert.ToInt32(txtSingle2.Text.Trim()));ThreadPool.SetMaxThreads(5,5);for(inti=0;i<8000;i++){varxxxxxxx="";stringurl_baidu="http://www.baidu.com/s?wd="+xxxxxxx+"";temp_modelmodel123=newtemp_model();model123.m_baseInfo=model;model123.times=i;ThreadPool.UnsafeQueueUserWorkItem(newWaitCallback(testInfo),model123);}}catch(Exceptionex){throwex;}}
testInfo函数里面就是HttpWebRequestget方式抓取数据。为毛执行一段时间之后就停止执行了。怎么找都找不到原因cpu内存也没有什么异常但是程序停止抓取了什么原因呢?
解决方案
解决方案二:
xxxxxxx一直不变?为啥你老是抓取同一个页面
解决方案三:
model123.times=i;这又是要闹哪样时间越来越长?
解决方案四:
引用2楼Z65443344的回复:
model123.times=i;这又是要闹哪样时间越来越长?
这个就是一个参数不管的xxxxxxx是变的就是一个字符串
解决方案五:
不是中断你用发的webclient还是webrequest?默认只能同时发2个请求加上这个System.Net.ServicePointManager.DefaultConnectionLimit=512;在配置节里面加上默认不需要代理第一次请求速度加快<system.net><defaultProxyenabled="false"useDefaultCredentials="false"><proxy/><bypasslist/><module/></defaultProxy></system.net>
解决方案六:
你应该贴些线程执行的代码出来.
解决方案七:
引用4楼zhuankeshumo的回复:
不是中断你用发的webclient还是webrequest?默认只能同时发2个请求加上这个System.Net.ServicePointManager.DefaultConnectionLimit=512;在配置节里面加上默认不需要代理第一次请求速度加快<system.net><defaultProxyenabled="false"useDefaultCredentials="false"><proxy/><bypasslist/><module/></defaultProxy></system.net>
webrequest现在是中断能看出来的没执行一次我都有日志记录能记录执行到哪一步
解决方案八:
引用6楼wl123858567的回复:
Quote: 引用4楼zhuankeshumo的回复:
不是中断你用发的webclient还是webrequest?默认只能同时发2个请求加上这个System.Net.ServicePointManager.DefaultConnectionLimit=512;在配置节里面加上默认不需要代理第一次请求速度加快<system.net><defaultProxyenabled="false"useDefaultCredentials="false"><proxy/><bypasslist/><module/></defaultProxy></system.net>webrequest现在是中断能看出来的没执行一次我都有日志记录能记录执行到哪一步
你把这个加上试试System.Net.ServicePointManager.DefaultConnectionLimit=512;并行的话一般第三个webrequest线程会导致阻塞