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