同时调用web服务线程
本文关键字:服务 线程 web 调用 | 更新日期: 2023-09-27 18:11:53
我有以下问题:我通过HttpWebRequest在web服务中提出了几个请求,如下所示。我创建了一个所有请求的列表,然后在列表中调用每个请求。事实证明,要运行所有内容,我的页面正在等待所有请求,然后页面被释放。我喜欢做什么?对于每一个请求,系统都会在不同的线程中发出一个请求,每个线程来完成,把结果扔到一个变量中,或者列表中……根据我的需要。有人有办法帮我吗?
非常感谢所有的StackOverflow用户,因为他们帮助了我很多。
米尔顿·柯马拉·戈麦斯
听起来你想执行一个异步请求。已经有很多关于这方面的信息(例如stackoverflow,官方MSDN walkthrough和MSDN博客帖子)。
通常的答案是线程。您可以在自己的线程上发出每个请求,然后在所有线程都接收到它们的结果时返回,而不是运行每个单独的请求并等待响应。这允许您在等待其他服务执行时重叠相当多的时间。
如果你正在使用。net 4,试试TPL的Parallel.ForEach()方法。它允许您指定应该对集合的每个项执行特定的操作,其功能与内置的foreach
关键字类似。听起来它应该很容易"插入"到您现在正在使用的代码中。这里的文档:http://msdn.microsoft.com/en-us/library/system.threading.tasks.parallel.foreach.aspx.
List<...> requests = new List<...>();
List<...> results = new List<...>();
Parallel.ForEach(requests,request=>{
var res = DoWork(request);
lock (results) results.Add(res);
});