HTTP વિનંતી ચાલુ રહે ત્યારે સ્ટોપવોચ રાહ જોવાનું બંધ કરી શકે છે. જ્યારે પ્રોક્સી મારફતેની કોશિશનું ઇચ્છિત બજેટ હોય ત્યારે ક્રિયાને જ રદ કરવાની સુવિધા આપો.

હાલના પ્રોક્સી-રૂપે ગોઠવેલ HttpClient ધરાવતી આધુનિક .NET એપ્લિકેશન માટે:

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 પર અનંત પોલિંગ લૂપથી તેને બદલવાનું ટાળો.

સંબંધિત લેખો