C# c语言中的异步http请求#
所以我正在制作一个类似于网络爬虫的程序。它下载页面的html,并使用正则表达式解析特定文本,然后将其添加到列表中 为了实现这一点,我使用了异步http请求。GET请求以异步方式发送,并对返回的html执行解析操作 我的问题,我不确定它是否简单,是程序运行不平稳。它将发送一组请求,暂停几秒钟,然后一次递增所有解析的项(尽管计数器编程为每次添加项时递增一次),例如,它从53跳到69,而不是显示54,55,56 很抱歉,我是个新手,但我自学了所有这些东西,一些有经验的建议会大有帮助 谢谢,听起来不错 任务最慢的部分是通过网络下载页面 你的程序开始一次下载一堆页面,等待它们到达,然后几乎立即解析它们。听起来不错 任务最慢的部分是通过网络下载页面C# c语言中的异步http请求#,c#,http,asynchronous,C#,Http,Asynchronous,所以我正在制作一个类似于网络爬虫的程序。它下载页面的html,并使用正则表达式解析特定文本,然后将其添加到列表中 为了实现这一点,我使用了异步http请求。GET请求以异步方式发送,并对返回的html执行解析操作 我的问题,我不确定它是否简单,是程序运行不平稳。它将发送一组请求,暂停几秒钟,然后一次递增所有解析的项(尽管计数器编程为每次添加项时递增一次),例如,它从53跳到69,而不是显示54,55,56 很抱歉,我是个新手,但我自学了所有这些东西,一些有经验的建议会大有帮助 谢谢,听起来不错
你的程序一次开始下载一堆页面,等待它们到达,然后几乎立即解析它们。这适用于一个特定的站点,其中生成的html总是以相同的形式显示,并且变量不断变化,因此正则表达式可以正常工作。但是出于好奇,还有其他更有效的方法吗?这是针对一个特定的站点,在这个站点中,生成的html总是以相同的形式出现,并且变量不断变化,因此正则表达式可以很好地工作。但是出于好奇,有没有其他更有效的方法呢?在这种情况下,我可以以某种方式优先考虑主线程吗?也就是说,将异步请求排入线程池的线程?我需要这样做,因为每次发出20个异步请求时,主线程也会发出一个请求。所以发生的是,它被备份在所有已经排队的线程池请求后面,并阻止整个程序等待它的响应。@ USER 111571:考虑使用已经被优化的TPL。请原谅我的无知,因为我从来没有使用过第三方物流。我应该对所有线程使用它,还是只对我提到的主要线程使用它?使用
Parallel.for*
或Task
或LINQaspallel()
,并且根本不直接使用线程或线程池。在这种情况下,我可以以某种方式优先考虑主线程吗?也就是说,将异步请求排入线程池的线程?我需要这样做,因为每次发出20个异步请求时,主线程也会发出一个请求。所以发生的是,它被备份在所有已经排队的线程池请求后面,并阻止整个程序等待它的响应。@ USER 111571:考虑使用已经被优化的TPL。请原谅我的无知,因为我从来没有使用过第三方物流。我应该对所有线程使用它,还是只对我提到的主要线程使用它?使用Parallel.for*
或Task
或LINQAsParallel()
,不要直接使用线程或线程池。