c#同时调用多个Web服务

时间:2010-11-06 20:27:30

标签: multithreading web-services c#-4.0

这是交易,我有一个网站,需要从多个webservices搜索,然后加入从webservices返回的所有结果,并显示混合。我已经完成了在一个地方搜索一个地方的代码

WsPesquisa pesq = new WsPesquisa();
IEnumerable<Objecto> Resultados = pesq.PesquisaObjecto("URL TO SEARCH", "TEXT TO SEARCH");

现在我需要使用线程一次在多个地方进行搜索,但对如何这样做有疑问。

有人可以提供一个线程示例来多次调用我上面使用过的代码,然后加入一个Objectos列表中所有线程的结果吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用标准LINQ查询,并使用PLINQ来并行化。

假设您的查询存储在query中,您要搜索的网站列表存储在名为sites的变量中,并且您有一个运行搜索的方法SearchSite(string query, string site)一个网站,以下应该做的伎俩:

var searchResults = from site in sites.AsParallel()
                    select SearchSite(query, site);

var resultList = new List<object>();
foreach (var searchResult in searchResults)
{
    // process result
    resultList.Add(searchResult);
}

这假设每个站点的搜索查询相同,所以:

  • AsParallel()表示您希望LINQ查询并行运行
  • select SearchSite(query, site) - 接受您的查询并在其上运行SearchSite方法
  • PLINQ负责等待所有结果进入,因此您可以按常规循环处理它们