我需要刮网站时是否应该使用BackgroundWorker或Threads?

1 c# multithreading backgroundworker

我打算在游戏网站上搜索一些数据.我希望能够发送多个请求,这样我就可以一次屏幕抓取几个页面.我已经通过电子邮件向网站管理员发送电子邮件,并获得了适当的速度(每秒几个请求).

据我所知,BackgroundWorker使用我认为可取的线程池.
将BackgroundWorker用于此用例或使用实际的线程是否有意义?

Bri*_*tle 5

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

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