ניצט איין CancellationToken פֿאַר .NET HttpClient קעפּלעך און קערפּער
פֿירט דעם פֿאָדערונגס 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.