ביטול בקשת .NET HttpClient דרך פרוקסי עם אסימון דדליין
בטלו את פעולת הרשת עצמה כשהדדליין של הפרוקסי פג, במקום להגביל רק את ההמתנה של הקורא.
העבירו את הדדליין לפעולה שיכולה לבטל את עבודת הרשת. עבור .NET HttpClient קיים שהוגדר דרך פרוקסי:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);היישום מספק client ו-uri. העמסה זו מקבלת את אסימון הביטול; פסק זמן סביב ההמתנה למשימה שלה יגביל רק את ההמתנה של אותו קורא. גם סקירת דגל השלמה סובלת מאותה בעיה: הקורא יכול לעזוב בעוד שהסוקטים והעובדים נשארים תפוסים.
הביטול עוקב אחר המימוש של הלקוח ואחר נתיב הניקוי. הוא אינו מבטיח שכל פעולה ברמה נמוכה יותר תיעצר בהוראה מדויקת. הניחו לנתיב הזה להסתיים ושחררו את המשאבים שהפעולה מחזיקה. כללו בתכנון קריאת גוף שנשלטת בנפרד; עבור פעולת .NET ResponseHeadersRead מודרנית, העבירו את אותו אסימון דרך קריאת הגוף. לקוחות אחרים מספקים ממשקי ביטול, הפסקה וניקוי משלהם.
ניסיון חוזר זקוק לתוצאה של הניסיון הקודם. שמרו על המזהה שלו ועל הפרוקסי שנבחר, בקשו ביטול כשצריך והימנעו מלאבד את המשימה תוך הפעלה אינסופית של מחליפים. אחרת נקודת קצה איטית עלולה לצבור עבודה מהר יותר מהיישום משחרר אותה.
התוצאה המרוחקת זקוקה לטיפול נפרד. ייתכן שהיעד כבר קיבל שליחה כשהביטול מתרחש. השתמשו במדיניות השחזור או האידמפוטנטיות של היישום; עצירת עבודה מקומית אינה מבטלת פעולה מרוחקת.