Nuligi .NET HttpClient-peton tra prokurilo per limdato-ĵetono
Nuligu la retan operacion mem kiam la prokurila limdato finiĝas, anstataŭ nur fini la atendadon de la alvokanto.
Transdonu la limdaton al la operacio, kiu povas nuligi la retan laboron. Por ekzistanta .NET HttpClient agordita tra prokurilo:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);La aplikaĵo liveras client kaj uri. Ĉi tiu superŝarĝo ricevas la nuligan ĵetonon; tempolimo ĉirkaŭ la atendado de sia tasko limigus nur la atendadon de tiu alvokanto. Sondado de kompletiĝa flago havas la saman problemon: la alvokanto povas foriri dum ingoj kaj laborantoj restas okupitaj.
Nuligo sekvas la efektivigon kaj la purigan vojon de la kliento. Ĝi ne promesas, ke ĉiu pli malalta ago haltos ĉe preciza instrukcio. Lasu tiun vojon finiĝi kaj liberigu la rimedojn, kiujn la operacio posedas. Inkluzivu aparte regatan legadon de la korpo en la dezajnon; por moderna .NET ResponseHeadersRead-operacio, transdonu la saman ĵetonon tra la korpa legado. Aliaj klientoj provizas proprajn interfacojn por nuligo, aborto kaj purigo.
Ripeto bezonas rezulton por la antaŭa provo. Konservu ĝian identigilon kaj la elektitan prokurilon, petu nuligon kiam necese kaj evitu perdi la taskon dum vi senfine lanĉas anstataŭaĵojn. Alie malrapida finpunkto povas amasigi laboron pli rapide ol la aplikaĵo liberigas ĝin.
La fora rezulto bezonas apartan traktadon. La celo eble jam ricevis sendaĵon kiam nuligo okazas. Uzu la reakiran aŭ idempotencan politikon de la aplikaĵo; haltigi lokan laboron ne malfaras foran agon.