并行HTTPWebrequest URL

时间:2013-01-27 15:01:09

标签: c# vb.net url httpwebrequest image

我有一个应用程序,可以加载指向要使用winforms下载图片的HTTP URL列表。异步下载的图片放在图像列表中。我已经完成了,但我的方法一次只下载一张图片,然后继续下载每张图片。有没有办法让webrequest并行下载多个项目以加快这个过程?即使带宽被划分,与应用程序一次只下载一张图片相比,它仍然应该更快。 VB或C#编码就行了。非常感谢你。

1 个答案:

答案 0 :(得分:-1)

尝试这种方法

https://github.com/dodyg/hobi-hobi/blob/master/HobiHobi.Core/Syndications/SyndicationFetcher.cs

  public List<FeedAndSource> DownloadAll(RssSubscription subscription)
    {
        var feeds = var feeds = new SynchronizedCollection<FeedAndSource>();

        var tasks = new List<Task>();

        foreach (var sub in subscription.Items)
        {
            var r = Task.Factory.StartNew(() =>
                {
                    var res = Fetch(sub.XmlUri);
                    if (res.IsFound)
                        feeds.Add(new FeedAndSource(sub, res.Item));
                });

            tasks.Add(r);
        }

        Task.WaitAll(tasks.ToArray());

        return feeds.toList();
    }

你需要关心的是Task.Factory.StartNew和Task.WaitAll。

您可以在

找到它们

使用System.Threading; 使用System.Threading.Tasks;

正如评论所指出的,List不是线程安全的。使用SynchronizedCollection而不是http://msdn.microsoft.com/en-us/library/ms668265.aspx