سؤال

ما هي أفضل الممارسات لتطبيق IDisposable على Winform؟

  • لدي مربع حوار يمتد System.Windows.Forms.Form
  • يحتوي Designer.cs الذي تم إنشاؤه بالفعل على تطبيق لطريقة Dispose(bool) الافتراضية
  • يحتوي النموذج الخاص بي على حقل تمت إضافته يدويًا والذي يقوم بتنفيذ IDisposable

من الناحية المثالية، سأكون قادرًا على ربط تجاوز Dispos(bool) في التعليمات البرمجية التي تم إنشاؤها للتخلص من كائن IDisposable المضاف يدويًا.هل هناك أي توصيات حول كيفية القيام بذلك بشكل صحيح؟

شكرًا.

سكوت

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

المحلول

يمكنك نقل تنفيذ التخلص هذا من .designer.cs وفي .cs الخاص بك.

نصائح أخرى

ولكن، يجب أن يكون مجالك مكونًا (قم بتنفيذ واجهة IComponent أو شيء مشابه).لن يكون ذلك مبالغة قليلا؟

ربما يمكنك إرفاق معالج الحدث بحدث التخلص والتخلص من حقولك في معالج الحدث هذا؟

(أو قم فقط بإضافتها إلى طريقة التخلص - لا أعتقد أن ذلك سيكون مشكلة، نظرًا لأنه لا يتم إعادة إنشاء الكود الموجود في طريقة التخلص ...من الناحية المثالية، لا ينبغي أن يكون تطبيق طريقة التخلص موجودًا في فئة *.designer.cs ...).

قمت بإلغاء تسجيل أي أحداث في أسلوب التخلص الموجود في Designer.cs الخاص بالنموذج

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
        base.Dispose(disposing);
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top