په داسې حال کې چې 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 په اړه د بې پایه پوښتنې لوپ سره یې بدل کړئ.

اړوندې مقالې