Прежде всего, асинхронность не означает ускорение, и в вашем случае это не будет иметь значения, если не замедлит работу еще больше.
Я просто собираюсь упростить то, что происходит, чтобы лучше понять это. Есть страница, которая загружает 125-200 изображений. Эти изображения являются динамически генерируемыми графиками. Это подводит итог того, что происходит? Если так, то:
Загрузка этих многих изображений не должна быть проблемой, если клиент имеет достаточную пропускную способность, и ваш сервер может обрабатывать запросы, и у вас достаточно большой канал на вашем сервере. Так где же задержка? Это гугл? Или ваш сервер замедляет работу?
насколько медленнее, чем переход из браузера прямо в Google?
Приемлемо ли время отклика перехода из браузера непосредственно в Google?
Если нет, возможно, вам нужно использовать другую стратегию в вашем пользовательском интерфейсе, чтобы все изображения не загружались автоматически. Или каждый клиент находится на вкладке или разбивает вещи на страницы, поэтому за один раз запрашиваются только небольшие объемы данных и, следовательно, изображений.
Используемый вами сокет Http будет ограничен отправкой 2 запросов в Google в любое время, независимо от того, какие потоки вы создаете. Есть способ изменить это число (но я не могу вспомнить, как это происходит). Во всяком случае, это, скорее всего, причина вашего замедления.
Использование асинхронных вызовов (для выполнения некоторых операций, связанных с вводом / выводом, как в этом случае) из кода бизнес-уровня, не дает вам возможности освободить поток запросов для обслуживания других запросов. Чтобы это работало, вам нужно использовать асинхронные страницы, поскольку страница может информировать IIS об этом факте. Любая другая асинхронная работа просто использует больше потоков (если вы не используете методы, используемые в Async CTP - C # 5.0, и специально используете потоки ввода-вывода, а не рабочие потоки.
Теперь, учитывая то, что вы видите, на стороне сервера возникают ошибки при получении изображений из Google, и вам необходимо знать, что это за ошибки. Я бы порекомендовал вам не использовать async для этого.