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

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

                 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

欢迎交流!

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

  1. 用 python 实现一个多线程网页下载器

    今天上来分享一下昨天实现的一个多线程网页下载器. 这是一个有着真实需求的实现,我的用途是拿它来通过 HTTP 方式向服务器提交游戏数据.把它放上来也是想大家帮忙挑刺,找找 bug,让它工作得更好. k ...

  2. C++并发与多线程学习笔记--async、future、packaged_task、promise

    async future packaged_task promise async std:async 是个函数,用来启动一个异步任务,启动起来一个异步任务之后,返回一个std::futre对象,启动一 ...

  3. AJAX异步提交,浏览器总跳出下载界面

    问题: 我在写一个网页的“用户登录”部分时,要将用户名和密码传到后端验证,想在前端用了AJAX异步提交功能,将 用户名密码传到后端,然后后端返回验证结果.但AJAX写好后每次刷新网页都会跳出下载窗口, ...

  4. ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码

    首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页面为例,一般 ...

  5. JS实现异步提交

    什么是XMLHttpRequest? XMLHttpRequest对象用于在后台与服务器交换数据 XMLHttpRequst的作用 在不重新加载页面的情况下更新网页 在页面已加载后从服务器请求数据 在 ...

  6. WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择

    NETCore提供了三种不同类型用于生产的REST API: HttpWebRequest;WebClient;HttpClient,开源社区创建了另一个名为RestSharp的库.如此多的http库 ...

  7. jquery ajax异步提交表单数据

    使用jquery的ajax方法可以异步提交表单,成功后后台返回json数据,回调函数处理,可以不用刷新页面,达到异步的目的: 处理表单的数据可以用serialize()方法进行序列化,而如果提交的数据 ...

  8. 使用submit异步提交,阻止表单默认提交

    <form id="addForm" onSubmit="return false;"> <input type="submit&q ...

  9. jQuery——表单异步提交

    如果不做任何处理,表单提交时会刷新页面,为了改善体验,可以使用jQuery做到异步提交表单:通过$("#form").serialize()将表单元素的数据转化为字符串,然后通过$ ...

随机推荐

  1. ASP.NET中的参数与特殊类型和特性

    一.可选参数和命名参数        1.可选参数            语法:                [修饰符] 返回类型 方法名(必选参数1...必选参数n,可选参数1...可选参数n)  ...

  2. MySQL复制错误1837的相关缺陷一例

    故障现象 主从gtid报错,复制错误1837,这个复制故障可以说是第一次遇到. Last_Errno: 1837 Last_Error: Error 'When @@SESSION.GTID_NEXT ...

  3. Linux CFS调度器之虚拟时钟vruntime与调度延迟--Linux进程的管理与调度(二十六)

    1 虚拟运行时间(今日内容提醒) 1.1 虚拟运行时间的引入 CFS为了实现公平,必须惩罚当前正在运行的进程,以使那些正在等待的进程下次被调度. 具体实现时,CFS通过每个进程的虚拟运行时间(vrun ...

  4. iOS开发创建UI的耗时操作处理

    项目中有网络请求.读写操作等一系列耗时操作时,为了避免阻塞主线程,我们会把这些耗时操作放到子线程中去处理,当处理完成后,再回到主线程更新UI,这样就不会阻塞主线程.但是创建UI的时候一般都是在主线程中 ...

  5. Unity与安卓开发的一些路径知识

    APK安装之后找不到路径 公司的测试机(安卓)基本都是不带SD卡的. APK在安卓手机上安装之后,使用手机助手类的软件打开文件管理,打开 内置SDK卡/Android/data/ 在这个目录下却发现 ...

  6. 【Ubuntu16.04.4】常用配置

    1.为root用户设置密码 sudo passwd root 2.设置用户登陆界面 sudo gedit  /usr/share/lightdm/lightdm.conf.d/50-unity-gre ...

  7. 安全之路 —— 使用Windows全局钩子打造键盘记录器

    简介 键盘记录功能一直是木马等恶意软件窥探用户隐私的标配,那么这个功能是怎么实现的呢?在Ring3级下,微软就为我们内置了一个Hook窗口消息的API,也就是SetWindowsHookEx函数,这个 ...

  8. fg和bg前后台调度命令

    Linux下的fg和bg命令是进程的前后台调度命令,即将指定号码(非进程号)的命令进程放到前台或后台运行.比如一个需要长时间运行的命令,我们就希望把它放入后台,这样就不会阻塞当前的操作:而一些服务型的 ...

  9. echarts图表大小随着外部div大小变化

    jquery有resize()事件,但直接调用没有起作用,引入jquery.ba-resize.js文件就可以了. 例如: <div class="chart" > & ...

  10. 模拟placeholder

    把这个记下来,主要是因为这里的 defaultValue 我之前竟然不知道 <input type="text" value="提示内容" onFocus ...