Trosglwyddwch y terfyn amser i'r llawdriniaeth sy'n gallu canslo'r gwaith rhwydwaith. Ar gyfer .NET HttpClient presennol wedi'i ffurfweddu drwy brocsi:

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

Mae'r cymhwysiad yn darparu client a uri. Mae'r gorlwythiad hwn yn derbyn y tocyn canslo; byddai terfyn amser o amgylch aros am ei dasg yn cyfyngu dim ond ar aros y galwr hwnnw. Mae polio baner cwblhau yn wynebu'r un broblem: gall y galwr adael tra bo socedi a gweithwyr yn dal i fod yn brysur.

Mae canslo yn dilyn gweithrediad y cleient a'r llwybr glanhau. Nid yw'n addo y bydd pob cam ar lefel is yn stopio ar gyfarwyddyd union. Gadewch i'r llwybr hwnnw orffen a rhyddhewch yr adnoddau y mae'r llawdriniaeth yn berchen arnynt. Cynhwyswch ddarllen corff a reolir ar wahân yn y dyluniad; ar gyfer llawdriniaeth .NET ResponseHeadersRead fodern, trosglwyddwch yr un tocyn drwy ddarlleniad y corff. Mae cleientiaid eraill yn darparu eu rhyngwynebau canslo, atal a glanhau eu hunain.

Mae ailgynnig angen canlyniad ar gyfer y cynnig blaenorol. Cadwch ei ddynodwr a'r procsi a ddewiswyd, gofynnwch am ganslo pan fo angen ac osgoi colli'r dasg wrth ddechrau amnewidiadau'n ddiddiwedd. Fel arall gall pwynt terfyn araf gronni gwaith yn gyflymach nag y mae'r cymhwysiad yn ei ryddhau.

Mae'r canlyniad o bell angen triniaeth ar wahân. Efallai bod y gyrchfan eisoes wedi derbyn cyflwyniad pan fydd canslo yn digwydd. Defnyddiwch bolisi adfer neu idempotens y cymhwysiad; nid yw atal gwaith lleol yn dadwneud gweithred bell.

Erthyglau cysylltiedig