[c#] متى يجب علي استخدام GC.SuppressFinalize ()؟


1 Answers

أنت تخبر النظام بأنه تم إنجاز أي عمل تم إجراؤه في برنامج Finalizer ، لذا لا يلزم استدعاء Finalizer. من مستندات. NET:

يمكن أن تقوم الكائنات التي تقوم بتطبيق واجهة IDisposable باستدعاء هذا الأسلوب من أسلوب IDisposable.Dispose لمنع أداة تجميع مجمعي البيانات المهملة من استدعاء Object.Finalize على كائن لا يتطلب ذلك.

بشكل عام ، يجب أن تكون معظم الطريقة Dispose () قادرة على استدعاء GC.SupressFinalize () ، لأنه يجب تنظيف كل ما يمكن تنظيفه في جهاز Finalizer.

SupressFinalize هو مجرد شيء يوفر تحسينًا يسمح للنظام بعدم إزعاج الكائن في مؤشر الترابط النهائي. يجب أن تعمل Disitting () / finalizer المكتوبة بشكل صحيح مع أو بدون استدعاء GC.SupressFinalize () بشكل صحيح.

Question

في .NET ، في أي الحالات يجب استخدام GC.SuppressFinalize() ؟

ما الميزة (المزايا) التي تستخدم هذه الطريقة تعطيني؟




 Dispose(true);
 GC.SuppressFinalize(this);

إذا كان الكائن يحتوي على finalizer ، فضع .net مرجعًا في قائمة الانتظار النهائية

نظرًا لأن لدينا استدعاء Dispose (ture) ، فقم بمسح الكائن ، لذلك لا نحتاج إلى قائمة الانتظار النهائية للقيام بهذه المهمة.

لذلك استدعاء GC.SuppressFinalize (هذا) إزالة المرجع في قائمة انتظار اللمسات الأخيرة.




Related