7 Mart 2018 Çarşamba

C# Using Disposable Kullanımı


usingin bir kullanım şeklini biliyorsunuz namespace dahil ederken kullanılır. Bu yazıda ise Disposable ile ilgili kullanımını anlatacağım.

Bildiğiniz üzere C# kendi içinde bir garbage collection mekanizmasına sahiptir. Garbage collection da bildiğiniz üzere, en kaba tabirle çöp toplama makinesi gibidir. Siz bir değişken tanımladığınızda, ister bir değer atayın, ister bir referans atayın derleyici bunun için bellekte bir yer ayırır ve o değişkenle işiniz bitince eğer onu yok etmezseniz daha sonra derleyici, belli bir kurala göre bu bellekte kalan artıkları bahsettiğimiz çöp toplama makinesi gibi çalışan garbage collection mekanizması ile temizler. Fakat bazen çok yoğun çalışan programlarda bir nedenle bu çöp toplama mekanizması geç kalabilir ve dolayısıyla belleğin şişmesine ve performansın düşmesine sebebiyet verebilir. Bu durumlarda kendi çöpümüzü kendimiz toplamız en güzel yoldur. İşte tam bu aşamada using kullanımı devreye girer. using kullandığımız zaman ilgili blokta işimiz bittiği anda, bellek temizleme mekanizması otomatikmen çalışacak ve belleğin şişmesi ve performansın yavaşlaması durumu böylece ortadan kalkacaktır. Peki using bunu nasıl yerine getirir? Öncelikle using ile kullanılacak bir nesne System.IDisposable arabiriminden türemiş olmalıdır. Böylelikle kullanılan blokta, bloktan çıkıldığı anda otomatikmen Dispose() metodu çağrılacak ve temizleme işi başlayacaktır. Böylece bu işi derleyiciye bırakmamış oluruz.


class UseUsing { static void Main() { StreamReader sr = new StreamReader("deneme.txt"); using (sr){ //sr nesnesini kullan //...... } //veya using (StreamReader sr2 = new StreamReader ("deneme.txt")){ //sr2 nesnesini kullan //....... } } }



Yukardaki örnekte StreamReader sınıfı IDisposable arabirimini uyguladığından bloktan çıkıldığı anda Dispose() metodu arka planda çalışacak ve sr ve sr2 nesneleri yok edilecek ve sizin ekstra bişey yapmanıza gerek kalmayacaktır.


Kısaca using ifadesi Disposable yöntemler kullanmamıza olanak tanır.

Faydalı olması dileğiyle...

İyi kodlamalar dilerim..


Paylaş:

Bu Blogda Ara