同时调用Web服务线程

时间:2011-10-21 18:14:22

标签: c# asp.net httpwebrequest

我有以下问题: 我通过HttpWebRequest在Web服务中发出了几个请求,如下所示。 我正在创建所有请求的列表,然后我在列表中执行一个调用每个请求。事实证明,为了运行所有内容,我的页面正在等待所有请求,然后页面被释放。我喜欢做什么? 对于每个请求,系统将在不同的线程中发出请求,每个线程完成,将结果抛出到变量或列表......根据我的需要。 有没有人有解决方案来帮助我?

非常感谢StackOverflow的所有用户,因为他们给了我很多帮助。

MiltonCâmaraGomes

3 个答案:

答案 0 :(得分:1)

听起来我想要执行异步请求。有很多相关信息(例如stackoverflowofficial MSDN walkthroughMSDN 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);
});