Stoppwatch jista' jieqaf jistenna waqt li t-talba HTTP tkompli. Ipprovdi l-kanċellazzjoni lill-operazzjoni nnifisha meta tentattiv tal-proxy jkollu baġit maħsub.

Għal applikazzjoni .NET moderna b'HttpClient ikkonfigurat għall-proxy li diġà teżisti:

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);

L-istess baġit jibda qabel it-tħejjija u jibqa' attiv waqt il-qari tal-body. ResponseHeadersRead jirritorna l-kontroll wara l-headers, għalhekk it-timeout proprju ta' HttpClient ma jiddefinixxix waħdu l-baġit tal-qari tal-body aktar tard.

Żomm il-kanċellazzjoni separata mill-istatus HTTP u mill-iżbalji tat-trasport. OperationCanceledException jista' jiġi mit-token mogħti jew minn timeout ieħor ikkonfigurat; iċċekkja s-sors tal-kanċellazzjoni applikabbli minflok tirrapporta kull falliment bħala proxy mejjet.

Erġa' uża l-klijent li għandu dan ir-rotta tal-proxy. Li tkanċella tentattiv ma jfissirx li terġa' tibni kull pool ta' konnessjonijiet għal kull talba li tiġi wara.

L-eżempju jbuffera body ta' risposta b'daqs limitat. Download f'stream għandu jgħaddi t-token fiċ-ċiklu tal-kopja tal-istream u jirrilaxxa r-risposta f'kull triq tal-ħruġ.

Il-kanċellazzjoni tesprimi politika tal-operazzjoni, mhux wegħda eżatta tal-ħin għal kull azzjoni tal-pjattaforma. Tevita li tissostitwixxiha b'ċiklu ta' tħejjija bla tmiem fuq Task.IsCompleted.

Artikli relatati