Мне нужно отправить много вызовов веб-сервисов, чтобы удалить кучу записей в Amazon SDB (к сожалению, строки могут быть удалены только в момент времени).
Я использую библиотеку Amazon SDB С#, которая не использует async WebRequests.
В настоящее время я использую ThreadPool.QueueUserWorkItem для очереди в очереди вызовов (я сконфигурировал мое соединение connectionManagement maxconnection, чтобы обеспечить связку соединений) это хорошо работает.. если запрос отправлен, он блокируется и выполняется другой запрос.
Это неправильный путь для достижения этой цели? Должен ли я использовать делегатов async и выполнять BeginInvoke и EndInvoke?
Если вам просто нужно поставить в очередь некоторые задания (которые не возвращают значения напрямую), перейдите к ThreadPool.QueueUserWorkItem
. Это быстрее. Разница рассматривается в других вопросах (и некоторые замечательные записи в блоге).
Для перехода на асинхронный режим необходимо отказаться от библиотеки Amazon и свернуть ее самостоятельно, используя BeginGetRequestStream/BeginGetResponse (который я бы рекомендовал). Если вы используете синхронизацию WebRequests, используйте QueueUserWorkItem.