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-ന്റെ അനന്തമായ പോളിംഗ് ലൂപ്പ് അതിനു പകരമാക്കരുത്.

അനുബന്ധ ലേഖനങ്ങൾ