Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中的异步http请求#_C#_Http_Asynchronous - Fatal编程技术网

C# c语言中的异步http请求#

C# c语言中的异步http请求#,c#,http,asynchronous,C#,Http,Asynchronous,所以我正在制作一个类似于网络爬虫的程序。它下载页面的html,并使用正则表达式解析特定文本,然后将其添加到列表中 为了实现这一点,我使用了异步http请求。GET请求以异步方式发送,并对返回的html执行解析操作 我的问题,我不确定它是否简单,是程序运行不平稳。它将发送一组请求,暂停几秒钟,然后一次递增所有解析的项(尽管计数器编程为每次添加项时递增一次),例如,它从53跳到69,而不是显示54,55,56 很抱歉,我是个新手,但我自学了所有这些东西,一些有经验的建议会大有帮助 谢谢,听起来不错

所以我正在制作一个类似于网络爬虫的程序。它下载页面的html,并使用正则表达式解析特定文本,然后将其添加到列表中

为了实现这一点,我使用了异步http请求。GET请求以异步方式发送,并对返回的html执行解析操作

我的问题,我不确定它是否简单,是程序运行不平稳。它将发送一组请求,暂停几秒钟,然后一次递增所有解析的项(尽管计数器编程为每次添加项时递增一次),例如,它从53跳到69,而不是显示54,55,56

很抱歉,我是个新手,但我自学了所有这些东西,一些有经验的建议会大有帮助

谢谢,听起来不错

任务最慢的部分是通过网络下载页面

你的程序开始一次下载一堆页面,等待它们到达,然后几乎立即解析它们。

听起来不错

任务最慢的部分是通过网络下载页面


你的程序一次开始下载一堆页面,等待它们到达,然后几乎立即解析它们。

这适用于一个特定的站点,其中生成的html总是以相同的形式显示,并且变量不断变化,因此正则表达式可以正常工作。但是出于好奇,还有其他更有效的方法吗?这是针对一个特定的站点,在这个站点中,生成的html总是以相同的形式出现,并且变量不断变化,因此正则表达式可以很好地工作。但是出于好奇,有没有其他更有效的方法呢?在这种情况下,我可以以某种方式优先考虑主线程吗?也就是说,将异步请求排入线程池的线程?我需要这样做,因为每次发出20个异步请求时,主线程也会发出一个请求。所以发生的是,它被备份在所有已经排队的线程池请求后面,并阻止整个程序等待它的响应。@ USER 111571:考虑使用已经被优化的TPL。请原谅我的无知,因为我从来没有使用过第三方物流。我应该对所有线程使用它,还是只对我提到的主要线程使用它?使用
Parallel.for*
Task
或LINQ
aspallel()
,并且根本不直接使用线程或线程池。在这种情况下,我可以以某种方式优先考虑主线程吗?也就是说,将异步请求排入线程池的线程?我需要这样做,因为每次发出20个异步请求时,主线程也会发出一个请求。所以发生的是,它被备份在所有已经排队的线程池请求后面,并阻止整个程序等待它的响应。@ USER 111571:考虑使用已经被优化的TPL。请原谅我的无知,因为我从来没有使用过第三方物流。我应该对所有线程使用它,还是只对我提到的主要线程使用它?使用
Parallel.for*
Task
或LINQ
AsParallel()
,不要直接使用线程或线程池。