我有以下问题: 我通过HttpWebRequest在Web服务中发出了几个请求,如下所示。 我正在创建所有请求的列表,然后我在列表中执行一个调用每个请求。事实证明,为了运行所有内容,我的页面正在等待所有请求,然后页面被释放。我喜欢做什么? 对于每个请求,系统将在不同的线程中发出请求,每个线程完成,将结果抛出到变量或列表......根据我的需要。 有没有人有解决方案来帮助我?
非常感谢StackOverflow的所有用户,因为他们给了我很多帮助。
MiltonCâmaraGomes
答案 0 :(得分:1)
听起来我想要执行异步请求。有很多相关信息(例如stackoverflow,official MSDN walkthrough和MSDN blog posting)。
答案 1 :(得分:0)
通常的答案是线程。您可以在自己的线程上发出每个请求,然后在所有线程都收到结果时返回,而不是运行每个单独的请求并等待响应。这允许您重叠等待其他服务执行所花费的大量时间。
如果您使用的是.NET 4,请尝试使用TPL的Parallel.ForEach()方法。它允许您指定应对集合的每个项执行特定操作,具有与内置foreach
关键字类似的功能。听起来它应该很容易“插入”你正在使用的代码。这里的文档:http://msdn.microsoft.com/en-us/library/system.threading.tasks.parallel.foreach.aspx。
答案 2 :(得分:0)
List<...> requests = new List<...>();
List<...> results = new List<...>();
Parallel.ForEach(requests,request=>{
var res = DoWork(request);
lock (results) results.Add(res);
});