'n Stophorlosie kan ophou wag terwyl die HTTP-versoek voortgaan. Gee kansellasie aan die bewerking self wanneer 'n proxy-poging 'n beoogde begroting het.

Vir 'n moderne .NET-toepassing met 'n bestaande proxy-gekonfigureerde HttpClient:

using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(5));
using var response = await client.GetAsync(
    targetUrl,
    HttpCompletionOption.ResponseHeadersRead,
    budget.Token);
response.EnsureSuccessStatusCode();
string body = await response.Content.ReadAsStringAsync(budget.Token);

Dieselfde begroting begin voor die opstelling en bly aktief terwyl die liggaam gelees word. ResponseHeadersRead gee beheer terug ná die koptekste, dus definieer HttpClient se eie voltooiingstydperk nie op sigself die latere begroting vir die lees van die liggaam nie.

Hou kansellasie apart van HTTP-status en vervoerfoute. 'n OperationCanceledException kan van die verskafde token of van 'n ander gekonfigureerde tydperk kom; ondersoek die toepaslike kansellasiebron eerder as om elke mislukking as 'n dooie proxy aan te meld.

Hergebruik die kliënt wat hierdie proxy-roete besit. Om 'n poging te kanselleer hoef nie te beteken dat 'n hele verbindingspoel vir elke latere versoek herbou moet word nie.

Die voorbeeld buffer 'n eindige responliggaam. 'n Stromende aflaai behoort die token deur sy stroom-kopieer-lus te stuur en die respons op elke uitgangspad vry te laat.

Kansellasie druk 'n bedryfsbeleid uit, nie 'n presiese klokbelofte vir elke onderliggende platformaksie nie. Vermy om dit te vervang met 'n eindelose peilingslus oor Task.IsCompleted.

Verwante artikels