Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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# 当我需要清理网站时,我应该使用BackgroundWorker还是线程?_C#_Multithreading_Backgroundworker - Fatal编程技术网

C# 当我需要清理网站时,我应该使用BackgroundWorker还是线程?

C# 当我需要清理网站时,我应该使用BackgroundWorker还是线程?,c#,multithreading,backgroundworker,C#,Multithreading,Backgroundworker,我将从一个游戏网站上截取一些数据。我希望能够发送多个请求,这样我就可以一次屏幕抓取多个页面。我已经给网站管理员发了电子邮件,并获得了以中等速率(每秒几个请求)进行刮取的权限 据我所知,BackgroundWorker使用我认为可取的线程池。 在这个用例中使用BackgroundWorker或者使用实际的线程有意义吗?还有另一种结构称为。它可能值得使用,因为它将为您管理多个线程,并且您可以控制线程的最小/最大数量。仅限于一个线程,最好用于具有后台I/O且不想锁定用户界面线程的WinForms应用程

我将从一个游戏网站上截取一些数据。我希望能够发送多个请求,这样我就可以一次屏幕抓取多个页面。我已经给网站管理员发了电子邮件,并获得了以中等速率(每秒几个请求)进行刮取的权限

据我所知,BackgroundWorker使用我认为可取的线程池。

在这个用例中使用BackgroundWorker或者使用实际的线程有意义吗?

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


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

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

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

的典型用法是保持UI的响应性;相反,使用线程池将多个http请求/响应排队

请参见

的典型用法是保持UI的响应性;相反,使用线程池将多个http请求/响应排队


请参见

Bgw使用线程池,它只是一个接口(到池)。没有理由不制作你所需要的Bgw。虽然技术上是可能的,但它远不是这项工作的最佳工具。最终,您将编写自己的系统来管理Bgw,Bgw看起来可能类似于线程池。Bgw使用线程池,它只是一个接口(到池)。没有理由不制作你所需要的Bgw。虽然技术上是可能的,但它远不是这项工作的最佳工具。最终,您将编写自己的系统来管理BGW,这可能类似于线程池。