Ваше использование HttpClient
правильно; хотя лучше использовать async
полностью, как некоторые уже прокомментировали, это не является причиной вашей ошибки.
TIME_WAIT
- обязательная фаза соединения TCP / IP; как только соединение установлено, сторона , которая инициирует закрытие соединения , перейдет в это состояние на предварительно настроенное время.
TCP / IP имеет ограниченный пул портов для входов и выходов.
Новые соединения используют их подмножество (так называемый динамический или эфемерный диапазон портов) для выделения порта на каждой стороне.
Ваше приложение получает сообщение об ошибке «Адрес используется» при попытке создать новое исходящее соединение, но в TCP не хватает локальных портов в динамическом диапазоне.
В зависимости от того, какой конец инициирует закрытие соединения, это может быть ваш клиент или сервер, у которого заканчиваются порты.
В этой статье Microsoft подробно описано, как изменить настройки Windows TCP / IP для высоких скоростей соединения:
- Изменение
TIME_WAIT
периода от 120 до 30 секунд
- Увеличение числа динамических портов с 16384 до 64511
Выполнение обоих этих действий увеличит максимальную скорость соединения со 136 соединений в секунду до примерно 2150.