C#:如何使用多线程处理httpwebrequests?

嗨,我对多线程一般不熟悉。我想在运行httpwebrequest时多线程处理,以便同时运行多个请求。我该如何做到这一点?
 

baucimontso1977

New member
首先需要包含命名空间:using System.Multithreading; 然后创建一个接受对象的函数:void YourFunctName(object argument1){ //在这里编写代码 } 然后在你想要启动(添加线程并且工作)的按钮事件中使用:ThreadPool.QueueUserWorkItem(YourFunctName, argument1); 对于每个你想要的任务都这样做,它们会同时运行。祝你好运。附注:如果你需要一些更高级的东西,线程可能会头疼。
 

petulimo1976

New member
嘿,我看到你的代码可以多任务处理,运行多个相同的httpwebrequests的多线程代码是什么?
 
将代码放入YourFunctName并在那里声明……每个都将有一个本地版本,因此如果它们具有相同的名称,则不会出现问题。变量的范围。之后,为了添加更多线程,也使用for循环添加所需的线程数。
 

emasasaz1972

New member
使用新线程的想法非常糟糕…非常难以控制和追踪它们…我通常使用的最好办法是在“Parallel.ForEach”循环中使用“httpwebrequest”…易处理而且速度更快,更好…而且你可以运行尽可能多的线程。
 

conbebike1983

New member
这段代码对我非常有用。使用System.Multithreading;然后,您可以创建一个接受对象的函数:void YourFunctName(object argument1){//这里是代码}然后在您想要启动它的按钮事件中(添加线程和工作),请使用:ThreadPool.QueueUserWorkItem(YourFunctName, argument1)。对于每个想要运行的任务都这样做,它们将同时运行。祝好运,最好的祝福。注:如果您需要更高级的东西,线程可能会让您头痛。
 

partpodeval1988

New member
确保限制同时进行的请求数量-您可以通过同时发出几百个请求(Make sure to limit the amount of requests you have going at once),使一个弱路由器崩溃。如果您正在使用线程池,则可以使用SetMaxThreads函数进行此操作,而不必太过烦恼。
 
记得增加DefaultConnectionLimit。我花了几个小时在思考为什么我的多线程应用程序的速度比同时运行的几个单线程应用程序要慢。
 

xidemece1988

New member
你不需要使用线程。创建一个包含异步HttpRequest函数的类文件,然后在主论坛的垃圾回收中加载你的类文件。
 

alfreromweb1989

New member
很抱歉翻出这个老的帖子,但我不想创建一个新的帖子,因为我有完全相同的问题。上面的代码效果非常好,现在下一步是什么呢?如何将旋转代理合并到其中?您会使用某种刷新方法来进行随机代理分配吗?
 
每次触发请求时,您都会分配一个随机代理。这些代理可以从列表中选择,或者您可以使用经过不断测试/更新的代理数据库。您还可以添加支持跟踪每个代理当前正在使用的连接数,以用作速率限制器,以避免A:代理崩溃B:被您连接的服务禁止。但是,您已经为您发布了一些示例,我只想增加我的2c。
 
顶部