Haltigilo povas ĉesi atendi dum la HTTP-peto daŭras. Provizu nuligon al la operacio mem kiam provo tra prokuro havas celitan buĝeton.

Por moderna .NET-aplikaĵo kun ekzistanta prokure agordita 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);

La sama buĝeto komenciĝas antaŭ la agordo kaj restas aktiva dum la korpo estas legata. ResponseHeadersRead redonas la regadon post la kapoj, do la propra fina tempolimo de HttpClient ne difinas per si mem la postan buĝeton por legi la korpon.

Tenu nuligon aparte de HTTP-stato kaj transportaj eraroj. OperationCanceledException povas veni de la donita ĵetono aŭ de alia agordita tempolimo; ekzamenu la koncernan nuligfonton anstataŭ raporti ĉiun malsukceson kiel mortan prokuron.

Reuzu la klienton, kiu posedas ĉi tiun prokuran vojon. Nuligi provon ne devas signifi rekonstrui tutan konektan provizujon por ĉiu posta peto.

La ekzemplo bufras finhavan respondkorpon. Elŝuto per fluo devus pasigi la ĵetonon tra sia fluo-kopia buklo kaj liberigi la respondon ĉe ĉiu elira vojo.

Nuligo esprimas operacian politikon, ne precizan horloĝan promeson por ĉiu suba platforma ago. Evitu anstataŭigi ĝin per senfina enketbuklo super Task.IsCompleted.

Rilataj artikoloj