سؤال

لدي مشكلة في أن عدد المقابض في تطبيقي ينمو باستمرار. فعلت تصحيح الأخطاء وأدرك أن هذا ناتج عن System.Threading.Thread فئة المستخدمة في بعض الروتين. لتبسيط تصحيح الأخطاء لقد قمت بإنشاء نموذج .NET:

    ...

    private void button1_Click(object sender, EventArgs e)
    {
        Thread t = new Thread(DoWork);
        t.Start();
    }

    public void DoWork(object parameter)
    {
        // Do something...
    }

    ...

في كل مرة أقوم بالنقر فوق الزر ، يتم إنشاء مؤشر ترابط باستخدام فئة System.Threading.Thread. المشكلة هي أن الخيط لا يحرر المقابض لأن كل نقرة تسبب عدد من المقابض ينمو بمقدار 5 ~.

والسؤال هو: كيف يمكنني تحرير جميع المقابض التي أنشأتها System.Threading.Thread؟

شكرا مقدما.

هل كانت مفيدة؟

المحلول

إنه في الواقع لا يتسرب من المقابض ، إنه مجرد أن GC لم يجمعها بعد. حاول تغيير الكود في معالج الأزرار بحيث يحلق وإنشاء 500 موضوع أو شيء ما ومحاولة الضغط عليه عدة مرات وربما ترى مقابض يتم جمعها.

نصائح أخرى

لا تحتاج إلى تحرير مقابض خيطك يدويًا ، ما عليك سوى إسقاط جميع الإشارات إلى Thread يجب أن يكون الحالة كافية. بالنظر إلى أن الخيط لم يعد قيد التشغيل وإزالة جميع الإشارات إليه ، فإن جامع Gargabe سيحرر المقابض في المجموعة التالية.

في حالتك ، لا يبدو أن الخيط سينتهي على الإطلاق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top