Şimdi Ara

Dispose Finalize Ve Destructor Kavramları

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
241
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Kavramları doğru kavramış mıyım teyit etmenizi istiyorum.

    Refrance type değişken veya Bir classtan New anahtar sözcüğüyle nesne ürettiğim an o nesne heapte yer işgal etmeye başlıyor. Ve o nesne kullanılmadığında dispose ediliyor. Fakat ramde kalmaya devam ediyor. GC ne zaman gelirse o zaman ramden siliniyor.

    Fakat ben bir nesnemin ramdeki durumunu GC ve normal süreç ile işlem görmesini istemediğim durumda o class için İdisposable arayüzünü implement ederek dispose metodunu yazıyorum. Bu metodu dışarıdan çağırabiliyorum destructordan farkı bu.

    Dispose metodunda ilgili nesneyi dispose ettiğimde ram üzerinde referanslarından arındırılıyor fakat ramde kalmaya devam ediyor bu sebeple GC yi ben çağırıyorum ki bunun sebbi GC bin ne zaman geleceğinin belli olmaması.

    GC geldi burda destructor çağrılmaması gerekiyor çünkü referanssız nesne erişime kapalı olması gerekiyor.

    Dispose uygulanmış bir nesnenin destructor u çağrılır mı?

    Destructor nesne GC vasıtasıyla silinmeden önce çalıştırılan method.

    Finalize ve destructor teknik olarak aynı şeyler.



    Yaptığım tanımlar ve yorumlar doğru mudur?







  • Her durumda gcc onu temizler sen IDisposable versen de vermesen de.
    IDisposable verince using(IDisposable ob =new classAdi()){

    }

    ile kullanabilirsin böylece blok bitiminde otomatik olarak dispoze olur gcc onu süpürmesini beklemez.

    2. faydası da sen dispose methodu oluşturur. Böylece sen orada kullandığın diğer managed kaynakları kendin dispose edebilirsin. Descrutor ise garbage collector objeyi gelip dispose etmek istediğinde Destructor çağırır böylece bir nevi event gibi düşün. Gc diyor ki ben temizlik atacağım senin ondan önce yapmak istediğin birşey varsa yap. Sende örneğin umnaged kodlarını dispose ediyorsun ve gc işini yapyıor.


    IDisposable sana bunu deterministic olarak yapma şansı veriyor using(){} de bonus.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.