c# - 当我需要抓取网站时,我应该使用 BackgroundWorker 还是 Threads?

标签 c# multithreading backgroundworker

我要对游戏网站进行屏幕抓取以获取一些数据。我希望能够发送多个请求,这样我就可以一次抓取多个页面。我已经给站点管理员发了电子邮件,并获得了以适中的速度(每秒几个请求)进行抓取的许可。

据我所知,BackgroundWorker 使用我认为理想的线程池。
对于这个用例使用 BackgroundWorker 或使用实际线程是否有意义?

最佳答案

还有另一种构造称为 ThreadPool .它可能值得使用它,因为它将为您管理多个线程,并且您可以控制线程的最小/最大数量。 BackgroundWorker仅限一个线程,最适用于具有后台 I/O 且不想锁定用户界面线程的 WinForms 应用程序。

你会想要保留一个页面队列来抓取并将它们提供给线程池。您可能仍想暂停或限制线程以获得预期的抓取级别。我个人会将检索到的页面内容的解析与通过 HTTP 对页面的实际检索分开。这通常会使事情更容易维护,并且您可能不需要本地处理是多线程的。

关于c# - 当我需要抓取网站时,我应该使用 BackgroundWorker 还是 Threads?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397206/

相关文章:

wpf - M-V-VM 和 BackgroundWorker

c# - NopCommerce 3.1 中的数据访问插件

c# - 有没有办法声明一个类似 Linq 的 CustomWhere() 方法并在没有冗余项的情况下调用它?

c - 识别哪个逻辑核心是超线程的,哪个不是

asp.net-core - 是否可以在现有的 ASPNET.Core Web 项目中调用和/或使用辅助服务?

c# - 使用可视化 C# 后台 worker 来更新数据库?

c# - 每秒运行一次函数 Visual C#

c# - MS Test 单元测试引发事件内容

C++ Pthread 互斥锁定

java - 创建一个运行在定时器上但可以随时被唤醒的java线程