Uża CancellationToken wieħed għall-headers u l-body ta' .NET HttpClient
Għaddi l-CancellationToken tat-talba kemm fit-tħejjija tar-risposta ta' HttpClient kif ukoll fil-qari tal-body, minflok tkejjel biss l-istennija tas-sejjieħ.
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.