编程语言
首页 > 编程语言> > C#-用于下载页面的并行类

C#-用于下载页面的并行类

作者:互联网

我有一个带有并行类的代码,可以从Web下载页面.由于我下载了约3000页,因此我想知道这是否是最好的方法.

Parallel.For(0, 3000, i =>
            {
                Console.WriteLine(i.ToString());
                //HttpDownloader is my class for downloading
                HttpDownloader ht = new HttpDownloader(s[i]);
                string a = ht.GetPage();
                Console.WriteLine(i.ToString());
            }); 

之后,我运行2 func:pharsing(string html)and save()//保存到数据库
我如何通过Parallel做到?
而且,如果我想让它运行后台,我需要将其插入BackgroundWorker吗?

解决方法:

就像您已经在做的那样,任务并行库(TPL,并行来自何处​​)模块是必经之路.但是,通过使用Parallel.ForEach而不是Parallel.For,您可以使事情更清晰:

var urls = new List<string> { "http://google.com", "http://yahoo.com" };

Parallel.ForEach(urls, url => {
    using (var client = new WebClient())
    {
        var contents = client.DownloadString(url);
        // parse contents
        // add to database
    }
});

进一步阅读,尤其是显示如何使用异步模式来节省线程(但不一定是速度),请参见:http://blogs.msdn.com/b/pfxteam/archive/2009/08/04/9857477.aspx

这是一本有用的文章,但我认为此时代码是性能和可读性之间的恰当平衡.

标签:download,parallel-processing,c
来源: https://codeday.me/bug/20191201/2080268.html