.NET HttpClient ৰ হেডাৰ আৰু বডিৰ বাবে এটা CancellationToken ব্যৱহাৰ কৰক
HttpClient ৰ সঁহাৰি প্ৰস্তুতি আৰু বডি পঢ়া দুয়োটাতে অনুৰোধৰ CancellationToken চলাই নিয়ক, কেৱল কলাৰৰ অপেক্ষা সময় মাপি নাথাকি।
ষ্টপৱাচে অপেক্ষা কৰা বন্ধ কৰিব পাৰে যদিও 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 ওপৰত অন্তহীন পʼলিং লুপেৰে ইয়াক প্ৰতিস্থাপন কৰাৰ পৰা বিৰত থাকক।