C# 当我需要清理网站时,我应该使用BackgroundWorker还是线程?
我将从一个游戏网站上截取一些数据。我希望能够发送多个请求,这样我就可以一次屏幕抓取多个页面。我已经给网站管理员发了电子邮件,并获得了以中等速率(每秒几个请求)进行刮取的权限 据我所知,BackgroundWorker使用我认为可取的线程池。C# 当我需要清理网站时,我应该使用BackgroundWorker还是线程?,c#,multithreading,backgroundworker,C#,Multithreading,Backgroundworker,我将从一个游戏网站上截取一些数据。我希望能够发送多个请求,这样我就可以一次屏幕抓取多个页面。我已经给网站管理员发了电子邮件,并获得了以中等速率(每秒几个请求)进行刮取的权限 据我所知,BackgroundWorker使用我认为可取的线程池。 在这个用例中使用BackgroundWorker或者使用实际的线程有意义吗?还有另一种结构称为。它可能值得使用,因为它将为您管理多个线程,并且您可以控制线程的最小/最大数量。仅限于一个线程,最好用于具有后台I/O且不想锁定用户界面线程的WinForms应用程
在这个用例中使用BackgroundWorker或者使用实际的线程有意义吗?还有另一种结构称为。它可能值得使用,因为它将为您管理多个线程,并且您可以控制线程的最小/最大数量。仅限于一个线程,最好用于具有后台I/O且不想锁定用户界面线程的WinForms应用程序
您将需要保留一个页面队列,以便刮取这些页面并将其提供给线程池。您可能仍然希望暂停或限制线程,以达到预期的刮取级别。我个人将解析检索到的页面内容与通过HTTP实际检索页面分开。这通常会使事情更易于维护,并且您可能不需要本地处理是多线程的。还有另一种结构称为。它可能值得使用,因为它将为您管理多个线程,并且您可以控制线程的最小/最大数量。仅限于一个线程,最好用于具有后台I/O且不想锁定用户界面线程的WinForms应用程序 您将需要保留一个页面队列,以便刮取这些页面并将其提供给线程池。您可能仍然希望暂停或限制线程,以达到预期的刮取级别。我个人将解析检索到的页面内容与通过HTTP实际检索页面分开。这通常会使事情更易于维护,并且您可能不需要本地处理是多线程的。的典型用法是保持UI的响应性;相反,使用线程池将多个http请求/响应排队 请参见的典型用法是保持UI的响应性;相反,使用线程池将多个http请求/响应排队
请参见Bgw使用线程池,它只是一个接口(到池)。没有理由不制作你所需要的Bgw。虽然技术上是可能的,但它远不是这项工作的最佳工具。最终,您将编写自己的系统来管理Bgw,Bgw看起来可能类似于线程池。Bgw使用线程池,它只是一个接口(到池)。没有理由不制作你所需要的Bgw。虽然技术上是可能的,但它远不是这项工作的最佳工具。最终,您将编写自己的系统来管理BGW,这可能类似于线程池。