Preklic zahteve .NET HttpClient prek proxyja z žetonom roka
Prekličite samo omrežno operacijo, ko poteče rok proxyja, namesto da bi omejili le čakanje klicatelja.
Rok predajte operaciji, ki lahko prekliče omrežno delo. Za obstoječi .NET HttpClient, konfiguriran prek proxyja:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);Aplikacija zagotavlja client in uri. Ta preobremenitev prejme žeton za preklic; časovna omejitev okoli čakanja na njeno opravilo bi omejila le čakanje tega klicatelja. Anketiranje zastavice dokončanja ima isto težavo: klicatelj lahko odide, medtem ko vtičnice in delavci ostanejo zasedeni.
Preklic sledi izvedbi odjemalca in poti čiščenja. Ne obljublja, da se bo vsako dejanje nižje ravni ustavilo pri natančnem ukazu. Dovolite, da se ta pot konča, in sprostite vire, ki jih ima operacija. V zasnovo vključite ločeno nadzorovano branje telesa; pri sodobni operaciji .NET ResponseHeadersRead predajte isti žeton skozi branje telesa. Drugi odjemalci ponujajo svoje vmesnike za preklic, ustavitev in čiščenje.
Ponovni poskus potrebuje izid prejšnjega poskusa. Ohranite njegov identifikator in izbrani proxy, zahtevajte preklic, ko je potrebno, in se izogibajte izgubi opravila med neskončnim zaganjanjem nadomestil. Sicer lahko počasna končna točka kopiči delo hitreje, kot ga aplikacija sprosti.
Oddaljeni izid zahteva ločeno obravnavo. Cilj je morda že prejel pošiljanje, ko pride do preklica. Uporabite politiko obnovitve ali idempotentnosti aplikacije; ustavitev lokalnega dela ne razveljavi oddaljenega dejanja.