Edastage tähtaeg operatsioonile, mis saab võrgutöö tühistada. Olemasoleva proksi kaudu konfigureeritud .NET HttpClient puhul:

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

Rakendus annab client ja uri. See ülekoormus võtab vastu tühistamistokeni; selle ülesande ootamise ümber olev ajalõpp piiraks ainult selle kutsuja ootamist. Lõpetamise lipu küsitlemisel on sama probleem: kutsuja võib lahkuda, samal ajal kui sokid ja töölised jäävad hõivatuks.

Tühistamine järgib kliendi rakendust ja puhastusteekonda. See ei taga, et iga madalama taseme toiming peatub täpsel käsul. Laske sellel teel lõppeda ja vabastage ressursid, mida operatsioon omab. Kaasake kavandisse eraldi juhitav keha lugemine; kaasaegse .NET ResponseHeadersRead operatsiooni puhul edastage sama token ka keha lugemise kaudu. Teised kliendid pakuvad oma tühistamis-, katkestamis- ja puhastusliideseid.

Korduskatse vajab eelmise katse tulemust. Säilitage selle identifikaator ja valitud proksi, taotlege vajadusel tühistamist ning vältige ülesande kaotamist, alustades asendajaid lõputult. Vastasel juhul võib aeglane lõpp-punkt koguda tööd kiiremini, kui rakendus seda vabastab.

Kaugtulemus vajab eraldi käsitlemist. Sihtkoht võib olla saatmise juba kätte saanud, kui tühistamine toimub. Kasutage rakenduse taastamis- või idempotentsuspoliitikat; kohaliku töö peatamine ei võta kaugtoimingut tagasi.

Seotud artiklid