Send fristen til operasjonen som kan avbryte nettverksarbeidet. For ein eksisterande proxy-konfigurert .NET HttpClient:

using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);

Programmet leverer client og uri. Denne overbelastninga tek imot avbrytingstokenet; eit tidsavbrot rundt ventinga på oppgåva ville berre avgrense ventinga til nettopp denne kallaren. Avstemming av eit fullføringsflagg har same problemet: den kallande kan gå medan sockets og arbeidarar blir verande opptekne.

Avbryting følgjer implementasjonen og oppryddingsvegen til klienten. Ho lovar ikkje at kvar handling på lågare nivå stoggar ved ei nøyaktig instruksjon. Lat den vegen fullføre og frigjer ressursane operasjonen eig. Ta med separat styrt lesing av body i designet; for ein moderne .NET ResponseHeadersRead-operasjon sender du det same tokenet gjennom body-lesinga. Andre klientar tilbyr eigne grensesnitt for avbryting, stans og opprydding.

Eit nytt forsøk treng eit utfall for det førre forsøket. Ta vare på identifikatoren og den valde proxyen, be om avbryting når det trengst og unngå å miste oppgåva medan erstattarar blir starta i det uendelege. Elles kan eit tregt endepunkt samle arbeid raskare enn programmet frigjer det.

Det eksterne utfallet treng eigen handsaming. Destinasjonen kan allereie ha motteke ei innsending når avbrytinga skjer. Bruk gjenopprettings- eller idempotenspolicyen til programmet; å stoppe lokalt arbeid gjer ikkje om ei ekstern handling.

Relaterte artiklar