Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1343 of 1492 menu
◀ ▶

SocketsHttpHandler

SocketsHttpHandler держит пул соединений. Клиент создают так: new HttpClient(handler) - один обработчик на много запросов. Новый HttpClient без общего обработчика на каждый запрос занимает сокеты. Закрытие - Dispose.

Синтаксис

using System.Net.Http; var handler = new SocketsHttpHandler(); using var client = new HttpClient(handler);

Пример

Давайте проверить лимит соединений на сервер по умолчанию:

using System; using System.Net.Http; class Program { static void Main() { var handler = new SocketsHttpHandler(); bool res = handler.MaxConnectionsPerServer == int.MaxValue; Console.WriteLine(res); handler.Dispose(); } }

Результат выполнения кода:

True

Пример

Давайте задать время жизни и простоя соединения в пуле:

using System; using System.Net.Http; class Program { static void Main() { var handler = new SocketsHttpHandler { PooledConnectionLifetime = TimeSpan.FromMinutes(2), PooledConnectionIdleTimeout = TimeSpan.FromMinutes(1) }; double res = handler.PooledConnectionLifetime.TotalMinutes; Console.WriteLine(res); Console.WriteLine( handler.PooledConnectionIdleTimeout.TotalMinutes); handler.Dispose(); } }

Результат выполнения кода:

2 1

Пример

Давайте закрыть обработчик отдельно от клиента:

using System; using System.Net.Http; class Program { static void Main() { var handler = new SocketsHttpHandler(); using (var client = new HttpClient(handler, disposeHandler: false)) { } handler.Dispose(); Console.WriteLine("abcde"); } }

Результат выполнения кода:

"abcde"

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить