В настоящее время у меня есть раздел кода, который должен содержать около 7 запросов веб-сервисов для различных поставщиков данных. Каждый вызов занимает несколько секунд, поэтому я хотел бы запускать их параллельно, чтобы ускорить работу.Использование параллельных расширений .Net (Parallel.Invoke) для множественных асинхронных вызовов?
Я завернул свои 7 звонков в Parallel.Invoke, который отлично работает при одновременном запуске нескольких вещей, но на 2-ядерном сервере он будет выполнять только 2 за один раз, по одному на ядро. Поскольку все, что я делаю, ждёт, когда вызовы веб-службы возвращаются, я бы хотел, чтобы он забрал все 7 и дождался их возвращения.
Нет ли способа сделать это? Или, может быть, мой подход неправильный? Возможно, мне нужно создать асинхронные вызовы для веб-служб? Но потом, как ждать, пока они все вернутся, прежде чем двигаться дальше?
У меня создалось впечатление, что он действительно хотел, чтобы все они закончили, прежде чем продолжить. –
@Steven: Что он может делать через Task.WaitAll - но он может выполнять другую работу, пока он ждет, если он доступен, если это вариант. Случаи, подобные этому, часто работают с Task.WaitAny, так как вы обычно можете начать часть работы, как только некоторые из задач завершатся - редко вам нужно 7 разных результатов для любой обработки ... –
Вы правильно, это тоже будет работать и более гибко, чем я предлагал. –