د .NET HttpClient سرلیکونو او بدن لپاره یو CancellationToken وکاروئ
د غوښتنې CancellationToken د HttpClient د ځواب چمتو کولو او د بدن لوستلو دواړو ته ورسوئ، نه یوازې د غوښتونکي انتظار وخت اندازه کوئ.
په داسې حال کې چې HTTP غوښتنه روانه وي، سټاپ واچ کولای شي انتظار ودروي. کله چې د پراکسي هڅې لپاره ټاکل شوی وخت بودیجه وي، لغوه کول پخپله عملیاتو ته ورکړئ.
د یوې عصري .NET غوښتنلیک لپاره چې له مخکې پراکسي ته تنظیم شوی 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);
هماغه بودیجه د چمتو کولو دمخه پیلېږي او د بدن د لوستلو پر مهال هم فعاله وي. ResponseHeadersRead وروسته له سرلیکونو کنټرول بیرته ورکوي، نو د HttpClient خپل وخت پای په خپله د وروستي بدن لوستلو بودیجه نه ټاکي.
لغوه کول د HTTP حالت او د لېږد تېروتنو څخه جلا وساتئ. OperationCanceledException کېدای شي د ورکړل شوي ټوکن یا بل تنظیم شوي وخت له امله راشي؛ د هرې ناکامۍ د مړ پراکسي په ښودلو پر ځای اړوند لغوه کولو سرچینه وګورئ.
هماغه کلاینټ بیا وکاروئ چې د دې پراکسي لار څښتن دی. د یوې هڅې لغوه کول دې معنا نه لري چې د هرې بلې غوښتنې لپاره ټول اړیکې حوض بیا جوړ شي.
بېلګه د محدودې اندازې ځواب بدن بفر کوي. د سټریم ډاونلوډ په صورت کې باید ټوکن د سټریم کاپي لوپ له لارې ولېږئ او په هر وتلو لار کې ځواب خوشې کړئ.
لغوه کول د عملیاتو تګلاره ښیي، نه د هر پلیټ فارم عمل لپاره دقیق ساعت ژمنه. د Task.IsCompleted په اړه د بې پایه پوښتنې لوپ سره یې بدل کړئ.