تهيئة و فصل المكونات

Your component is initialized by its constructor (Sub New in Visual Basic) and destroyed by its destructor (Sub Finalizein Visual Basic). Your مكوّن's الدالة الإنشائية هو called when an مثيل of your مكوّن هو تاريخ الإنشاء; the الدالة الإنشائية cannot be called thereafter. يدعى في destructor قبل أن يتم إتلاف المكون الخاص بك عن طريق تجميع البيانات المهملة وتم استخلاص عن الذاكرة الخاصة به.

ملاحظة Visual Basicملاحظة Visual Basic

في السابق versions of Visual أساسى, the Initialize و Terminate أحداث served the same purpose كـ the الدالة الإنشائية و destructor.

في انتظار تجميع البيانات المهملة

The وقت تشغيل اللغة العامة calls your مكوّن's destructor بعد the garbage مجموعة determines that the مكوّن can لا longer be reached بواسطة أي executing تعليمات برمجية. This happens if الجميع مراجع إلى the مكوّن have been released, أو if the فقط مراجع إلى your مكوّن are held بواسطة الكائنات that are similarly معزول من الجميع executing تعليمات برمجية — for مثال, في the حالة of circular مراجع.

Because there can be a تأخير between the moment when a مستخدم هو finished مع your مكوّن و the moment when its destructor هو called, an إضافى step هو introduced في the مدة بقاء of .NET Framework مكونات: If your مكوّن acquires النظام موارد, such كـ قاعدة بيانات الاتصالات أو handles إلى Windows النظام الكائنات, you should implement the IDisposable واجهة, و provide a Dispose أسلوب so that users of your مكوّن can اختيار when إلى يطرح المنتج those موارد.

دورة الحياة of a مكوّن

نوع تهيئة: When the أول مثيل of your مكوّن هو تاريخ الإنشاء, the أول تعليمات برمجية that executes هو أي shared تهيئة تعليمات برمجية. A مرجع إلى أي shared عضو will also cause the shared الدالة الإنشائية إلى ينفذ. This includes any shared fields (member variables) that are initialized, and the shared constructor (Shared Sub New) if it exists. في the following تعليمات برمجية, a مرجع خط هو تاريخ الإنشاء for the entire فئة.

ملاحظة

The C# كلمة أساسية that corresponds إلى Shared هو static, which ليس إلى be confused مع the Static كلمة أساسية في Visual أساسى.

When Should You Implement a Dispose أسلوب?

If your مكوّن inherits من Component, a الافتراضي implementation of Dispose هو provided. This implementation can be overridden إلى provide مخصص cleanup تعليمات برمجية. If you are إنشاء? your مكوّن بواسطة creating a مخصص implementation of IComponent, you should implement IDisposable إلى provide a Dispose أسلوب for your مكوّن.

مكوّن الخاص بك يحتاج Disposeالأسلوب إذا كان ذلك بتخصيص الكائنات النظام، الاتصالات قاعدة البيانات، أو موارد غير ذلك صغيرة يجب أن يتم إصدار بمجرد الانتهاء من مستخدم مع مكوّن.

You should also implement a Dispose أسلوب if your مكوّن holds مراجع إلى غير ذلك الكائنات that have Dispose وظائف.

Why Implement Dispose?

استناداً إلى نشاط النظام، قد تنقضي فترة زمنية غير متوقعة بين وقت انتهاء مستخدم من استخدام المكون الخاص بك والوقت تجميع البيانات المهملة يكتشف أن التعليمات البرمجية المكون غير قابلة للوصول. If you do not provide a Dispose أسلوب, your مكوّن will متابعة إلى تقييد its موارد during this interval.

A Worst-حالة السيناريو

Imagine a الخادم مكوّن that uses a قاعدة بيانات اتصال و does not have a Dispose أسلوب. تشغيل a الخادم مع a قطر أيمن متوسط المقدار of ذاكرة, you might إنشاء و يطرح المنتج many instances of the مكوّن without having much impact تشغيل حر ذاكرة. في this حالة, garbage مجموعة might not destroy the مكونات for some الوقت بعد the مراجع إلى them are released.

Eventually, الجميع of the متوفر قاعدة بيانات الاتصالات could be tied لأعلى بواسطة مكونات that had been released but not destroyed. Even though the الخادم had لا shortage of ذاكرة, it might be unable إلى respond إلى مستخدم requests.

راجع أيضًا:

المهام

كيفية: إنشاء مكونات وتكوينها في وضع التصميم

المرجع

Dispose

Finalize

المبادئ

الصفات المميزة لفئة مكوّن

مكوّن المثيلات التغييرات في Visual أساسى