【发布时间】:2013-04-20 00:32:24
【问题描述】:
我一直在考虑让我的网络爬虫多线程,不像普通线程(例如Thread scrape = new Thread(Function);),而是像线程池那样可以有大量线程。
我的抓取工具通过使用for 循环来抓取页面。
for (int i = (int)pagesMin.Value; i <= (int)pagesMax.Value; i++)
那么我怎样才能用线程池之类的东西对函数(包含循环)进行多线程处理?我以前从未使用过线程池,我所看到的示例对我来说非常混乱或晦涩。
我已将循环修改为:
int min = (int)pagesMin.Value;
int max = (int)pagesMax.Value;
ParallelOptions pOptions = new ParallelOptions();
pOptions.MaxDegreeOfParallelism = Properties.Settings.Default.Threads;
Parallel.For(min, max, pOptions, i =>{
//Scraping
});
这会起作用还是我有什么问题?
【问题讨论】:
-
为什么不使用
Parallel.For或TaskFactory.StartNew?
标签: c# multithreading web-scraping .net-4.0