使用C# HttpWebRequest进行多线程网页提交。Async httpclient/HttpWebRequest实现批量任务的发布及异步提交和超时取消

使用线程池并发处理request请求及错误重试,使用委托处理UI界面输出。

 http://www.cnblogs.com/Charltsing/p/httpwebrequest.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
for (int j = 0; j < _userlist.Count; j++)
   {
       user = _userlist[j];
       if (user.Length == 0) continue;
 
       for (int k = 0; k < _passwordlist.Count; k++)
       {
           password = _passwordlist[k];
           if (password.Length == 0) continue;
 
           if (threadscount < _MaxThreadsCount)
           {                               
               if (_isStop)
               {
                   WriteMessage("\r\n停止创建新线程,正在结束已运行的线程,请等待...\r\n");
                   goto StopHttp;
               }
               HttpWebRequestParameters param = new HttpWebRequestParameters(url, user, password,0,false);
               ThreadPool.QueueUserWorkItem(new WaitCallback(MakeWebRequest), param);
               Interlocked.Increment(ref threadscount);
               Interlocked.Increment(ref requestcount);
           }
           else
           {
               k--;
           }
           WriteStatus("已使用线程数:" + threadscount.ToString() +
                       " 已发送请求数:" + requestcount.ToString() +
                       " 已完成请求数:" + responsecount.ToString());
       }
       System.GC.Collect();
   }

  

***************************************

更新说明:

上面的方法使用线程池,这种方法没有task方便。

我在2016年11月用async/await+httpclient 重新写了一个版本,实现了完整的任务发布、异步提交http请求、超时或者手工取消的操作

 

此外,还写了一个使用async+HttpWebRequest+task实现的异步提交任务及超时处理的代码版本,这种方法不需要自己实现多线程,异步操作本身就是通过线程池来实现多线程的。

 

 

 

联系QQ:564955427

欢迎交流!

posted @   Charltsing  阅读(8987)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2013-09-07 Winform MDI窗体切换不闪烁的解决办法(测试通过)
点击右上角即可分享
微信分享提示