Nýt eitt CancellationToken til .NET HttpClient-høvd og -kropp
Ber CancellationToken hjá fyrispurninginum bæði gjøgnum uppseting av HttpClient-svar og lesing av kroppinum, í staðin fyri bert at máta bíðing hjá kallaranum.
Eitt stoppur kann steðga at bíða, meðan HTTP-fyrispurningurin heldur fram. Gev avlýsing til sjálvar operatiónina, tá ið eitt roynd gjøgnum proxy hevur eitt ætlað budget.
Fyri eitt nútíðar .NET-forrit við einum verandi proxy-uppsettum HttpClient:
using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(5));
using var response = await client.GetAsync(
targetUrl,
HttpCompletionOption.ResponseHeadersRead,
budget.Token);
response.EnsureSuccessStatusCode();
string body = await response.Content.ReadAsStringAsync(budget.Token);
Sama budget byrjar áðrenn uppsetingina og verður verandi virkið, meðan kroppurin verður lisin. ResponseHeadersRead gevur stýringina aftur eftir høvdini, so egin tíðarfreist hjá HttpClient fyri at vera liðug hevur ikki í sjálvum sær ávirkan á seinni budget fyri lesing av kroppinum.
Halt avlýsing skilt frá HTTP-støðu og transportfeilum. Ein OperationCanceledException kann koma frá tí veitta tokeninum ella frá eini aðrari uppsettari tíðarfreist; kanna tann viðkomandi keldu til avlýsingar í staðin fyri at boða frá hvørjum miseydnaði roynd sum deyðum proxy.
Nýt aftur tann klientin, sum eigur hesa proxy-leiðina. At avlýsa eitt roynd merkir ikki neyðturviliga, at ein heil sambandspool skal byggjast uppaftur fyri hvønn seinni fyrispurning.
Dømið buffrar ein endaligan svar-kropp. Ein streamandi niðurtøka eigur at senda tokenið gjøgnum sín stream-kopieringarlúkkju og frígera svarið á hvørjari út-vegi.
Avlýsing lýsir eina operatións-politikk, ikki eitt nágreiniligt lyfti um veggklokku-tíð fyri hvørja undirliggjandi platformverknað. Forða tær frá at skifta hana út við eini endaleysari spyrjarlúkkju um Task.IsCompleted.