Proksi orqali yuborilgan .NET HttpClient so‘rovini muddat tokeni bilan bekor qilish
Proksi muddati tugaganda faqat chaqiruvchining kutishini to‘xtatish o‘rniga tarmoq amalini o‘zini bekor qiling.
Muddatni tarmoq ishini bekor qila oladigan amalga uzating. Proksi orqali sozlangan mavjud .NET HttpClient uchun:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);Ilova client va uri ni taqdim etadi. Bu ortiqcha yuklama bekor qilish tokenini oladi; uning vazifasini kutish atrofidagi taym-aut faqat shu chaqiruvchining kutishini cheklaydi. Tugallanish bayrog‘ini so‘rash ham xuddi shu muammoga ega: soketlar va ishchilar band bo‘lib turganda chaqiruvchi ketishi mumkin.
Bekor qilish mijozning amalga oshirilishi va tozalash yo‘lidan boradi. U har bir quyi darajadagi harakat aniq ko‘rsatmada to‘xtashini va’da qilmaydi. Bu yo‘l tugashiga ruxsat bering va amal egalik qiladigan resurslarni bo‘shating. Dizaynga alohida boshqariladigan tana o‘qishini kiriting; zamonaviy .NET ResponseHeadersRead amali uchun o‘sha tokenni tana o‘qishi orqali o‘tkazing. Boshqa mijozlar o‘zlarining bekor qilish, to‘xtatish va tozalash interfeyslarini taqdim etadi.
Qayta urinish oldingi urinish uchun natija talab qiladi. Uning identifikatori va tanlangan proksini saqlang, kerak bo‘lganda bekor qilishni so‘rang va o‘rinbosarlarni cheksiz boshlash paytida vazifani yo‘qotishdan saqlaning. Aks holda sekin so‘nggi nuqta ishni ilova bo‘shatganidan tezroq to‘plashi mumkin.
Uzoq natija alohida ishlov berishni talab qiladi. Bekor qilish sodir bo‘lganda manzil allaqachon yuborishni qabul qilgan bo‘lishi mumkin. Ilovaning tiklash yoki idempotentlik siyosatidan foydalaning; mahalliy ishni to‘xtatish uzoq amalni bekor qilmaydi.