ប្រើ 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។