C# Classes ve deconstructor hakkında biraz kafam karışık.EventHandlers and C# Sınıflar destructor/Dispose
Ben yapıcı içinde alıyorum bir sınıf örneğine birkaç olay işleyicileri tüketmek zorunda: Ben Foo sınıfı tahrip edildiğinde o olaya abonelikten gerekir
public Foo(IFooHandler handler)
{
handler.Load += Load;
handler.Close += Close;
}
. IDisposable
'u uygulayıp oradan veya bir deconstructor aboneliğinden çıkarıyorum? O olayları tüketmem lazım, başka bir şekilde yapamam.
Sınıflardan biri için bir örnek oluşturur, ilerlemeyi denetler ve sonra sınıf örneği kapsam dışı kalır. Başka bir şey için form kapatılana kadar MainForm
'da kalır. İlki endişelendiğim şey, çünkü o olay işleyicisine hala bir referansı olabilir ve düzgün gitmiyor.
Belleği sızdırmak istemiyorum. Ne zaman ve nasıl abonelikten çıkmalıyım?
Ah! Yönetilmeyen kodları temizlemedikçe IDC'yi kullanmamalı mıyız diye düşündüm. –
IDisposable diğer nedenlerden dolayı uygulanabilir, yönetilmeyen kaynakların temizlenmesi ile sınırlı değildir ... –
Ortak Tek Kullanımlık Modele bakarsanız, yönetilen ve yönetilmeyen kaynaklar için bir yol vardır. Çoğunlukla yalnızca yönetilmeyen kaynaklarınız ve/veya yönetilenleriniz var. Ama sizin durumunuz için, sadece temizlenmesi gereken kaynakları yönetmeniz yeterlidir. – Oliver