c # вызвать несколько веб-сервисов одновременно - PullRequest
0 голосов
/ 06 ноября 2010

Вот предложение, у меня есть веб-сайт, который требуется для поиска по нескольким веб-сервисам, а затем объединить все результаты, полученные с веб-сервисов, и отобразить их в смешанном виде. Я сделал код для поиска одного места в одном

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

Теперь мне нужно использовать потоки для поиска в нескольких местах одновременно, но я сомневаюсь, как это сделать.

Может ли кто-нибудь предоставить пример потока, чтобы несколько раз вызвать код, который я использовал выше, а затем объединить результаты всех потоков в один список объектов?

Заранее спасибо

1 Ответ

0 голосов
/ 07 ноября 2010

Один из способов сделать это - использовать стандартный запрос 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 заботится о том, чтобы дождаться получения всех результатов, поэтому вы можете просто обработать их в обычном цикле for
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...