"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > متى وكيف يجب أن أتخلص من cancellationTokensource؟

متى وكيف يجب أن أتخلص من cancellationTokensource؟

نشر في 2025-02-06
تصفح:334

When and How Should I Dispose of a CancellationTokenSource?

أفضل الممارسات: المعالجة الصحيحة collationTokensource

] على الرغم من أنه يمكن إصدار الفئة

تستكشف هذه المقالة المتعمقة عندما تطلق هذه الأنواع بشكل فعال.

أحد أسباب هذا عدم الواضح هو أن

cancellationTokensource لا يحتوي على نهائيات. هذا يعني أن جامع القمامة (GC) لا يمكنه تحريره تلقائيًا. لذلك ، يصبح من مسؤولية المطور أن يفرج بشكل صريح من مصدر الرمز المميز.

مع ذلك ، نادراً ما تذكر الأمثلة المقدمة على MSDN الإصدار. إذن ، ما هي الطريقة الموصى بها؟

إطلاق استراتيجية

  1. استخدم عبارة "استخدام" عند انتظار إكمال المهمة: إذا كنت تنتظر إكمال المهمة المتوازية ، فيمكنك استخدام عبارة "استخدام" للف الرمز. هذا يضمن إصدار مصدر الرمز المميز تلقائيًا بعد اكتمال المهمة:

     using (CancellationTokenSource tokenSource = new CancellationTokenSource())
     {
         Task.Run(() => { }, tokenSource.Token);
     }
  2. استخدم continuewith و release يدويًا: بدلاً من ذلك ، يمكنك تسجيل معالج حدث متواصل في المهمة وإطلاق مصدر الرمز المميز يدويًا في المعالج:

     Task.Run(async () =>
     {
         try
         {
             // 任务代码
         }
         finally
         {
             tokenSource.Dispose();
         }
     }, tokenSource.Token);
  3. استعلام plinq الذي يمكن إلغاؤه: للحصول على استعلام plinq غير المحدد ، فإن الطريقة الموصى بها هي التنفيذ في التخلص معالج الأحداث cancellationTokensource جميع العمليات.

  4. إعادة الاستخدام والاستخدام المتعدد: cancellationToKensource لا يمكن إعادة استخدامه. يجب إنشاءها وإصدارها لكل عملية إلغاء.

  5. الإصدار مباشرة: إذا لم تتمكن من استخدام عبارة "استخدام" أو معالج الأحداث المتواصل ، يمكنك إصدار مصدر الرمز المميز مباشرة بعد اكتماله:

     CancellationTokenSource tokenSource = new CancellationTokenSource();
     Task.Run(() => { }, tokenSource.Token);
     // ...
     tokenSource.Dispose();

تلخيص

relection

cancellationTokensource مثيل ضروري لمنع تسرب الذاكرة وضمان إدارة الموارد المناسبة. باتباع استراتيجية الإصدار الموصى بها ، يمكن للمطورين التعامل بشكل فعال في عمليات الإلغاء في الكود.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3