C# 并行HttpWebRequestURL

C# 并行HttpWebRequestURL,c#,vb.net,url,httpwebrequest,image,C#,Vb.net,Url,Httpwebrequest,Image,我有一个应用程序,它加载一个HTTP URL列表,指向要使用winforms下载的图片。异步下载的图片放置在imagelist中。我已经这样做了,但我的方法一次只下载一张图片,一直到每一张图片都下载完毕。有没有办法让webrequest并行下载多个项目以加快下载过程?即使带宽被划分,它也应该比应用程序一次只下载一张图片的速度更快。VB或C编码就可以了。非常感谢。试试这种方法 您需要关心的是Task.Factory.StartNew和Task.WaitAll 你可以在 使用系统线程; 使用Syst

我有一个应用程序,它加载一个HTTP URL列表,指向要使用winforms下载的图片。异步下载的图片放置在imagelist中。我已经这样做了,但我的方法一次只下载一张图片,一直到每一张图片都下载完毕。有没有办法让webrequest并行下载多个项目以加快下载过程?即使带宽被划分,它也应该比应用程序一次只下载一张图片的速度更快。VB或C编码就可以了。非常感谢。

试试这种方法

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

你可以在

使用系统线程; 使用System.Threading.Tasks


正如评论所指出的,这个列表不是线程安全的。改用SynchronizedCollection

请显示一些源代码。。。你试过什么?什么不起作用?也许你可以为另一个线程中的每个图像调用HTTPWebrequest download…看看Parallel.ForEach和PLINQ。我的程序实际上运行得很好,但是,我所做的是逐个下载列表中每个项目指定的特定文件,因此如果列表中有5个项目,每个项目的下载空间为1MB,第二个项目需要等待第一个项目被下载,以此类推…我现在正在使用webrequest…我更喜欢的是程序同时下载多个项目…我在另一个线程中尝试了HTTPrequest,它确实有效,但我很确定还有更好的方法,比这更有效,我说的对吗?这个代码不是线程安全的。您不能像这样同时从多个线程访问列表。
  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();
    }