
C#’da Close() ve Dispose() Nedir ve Neden Kullanılır? Temelden başlayarak bu yapıları anlamaya çalışalım. C# dilinde Close() ve Dispose() genellikle karıştırılan 2 farklı amaca hizmet eden yapılardır.
Close() ve Dispose() Neden Kullanılır?
Öncelikle Close() ve Dispose() neden kullanılıyor o konuya değinelim. Close() ve Dispose() bağlantı kapatma yöntemleridir ve yaygın olarak Open() ile açılan SQL bağlantısını sonlandırmak için kullanılır. Open() olmadan Close() ve Dispose() kullanılırsa bu komutlar geçersiz olurlar.
C#’da Close() Kullanımı
- Açılmış bağlantıyı kapatmak için kullanılır.
- Örneğin bir SqlConnection açıldıysa, işin bittikten sonra
Close()ile bağlantıyı kesmeliyiz. Close()ile bağlantı kapatılır ancak! oluşturulan nesne hala bellekte durur veOpen()ile tekrar kullanılabilir.
var connection = new SqlConnection(connectionString);
connection.Open(); // Şu an SQL Server ile aranda aktif bir bağlantı kuruldu.
// işlemler
connection.Close(); // Bağlantıyı kapattın ama nesne hâlâ var.
C#’da Dispose() Kullanımı
Dispose()sadece bağlantıyı kapatmaz, aynı zamanda nesnenin kullanıldığı tüm sistem kaynaklarını kalıcı olarak temizler.Dispose()edilen bir nesne bir daha kullanılamaz!
var connection = new SqlConnection(connectionString);
connection.Open(); // Şu an SQL Server ile aranda aktif bir bağlantı kuruldu.
// işlemler
connection.Dispose(); // Bellekten tamamen atılır, tekrar kullanılamaz.
Neden Önemlidir?
Eğer Close() ve Dispose() kullanmazsak, özellikle veri tabanı, dosya veya ağ bağlantılarında:
- Bağlantılar açık kalır.
- Bellekte sızıntı (memory leak) olur.
- Uygulama çalışırken birden fazla bağlantı hatası alabiliriz.
"Too many open connections"gibi.
Bağlantıları Kapatmazsak Ne Olur?
Veritabanı kaynakları tükenir
Her Open() çağrısı bir “slot” kaplar. Kapatmazsan:
- Diğer işlemler bağlantı kuramaz.
- Performans düşer.
- SQL Server zamanla
“connection pool”taşmasıyla hata verir.
Memory Leak (Bellek sızıntısı) olurDispose() çağrılmazsa, garbage collector nesneyi temizlemez. Bu da:
- RAM şişmesine
- Sistem kararsızlığına
- Uzun vadede çökmesine neden olur.
Özetle
Close()genellikle açılmış bir şeyi kapatır. (dosya, bağlantı, form vs.)Dispose()ise hem kapatır hem de bellekte yer tutan kaynakları temizler.Dispose(), daha genel ve kapsamlıdır.usingbloğu aslındaDispose()çağırmak için kısa yoldur.
| İşlem | Ne Yapar? | Ne Zaman Kullanılır? |
|---|---|---|
Close() | Bağlantıyı kapatır | Bağlantı sonra tekrar kullanılacaksa |
Dispose() | Kaynağı tamamen serbest bırakır | İş tamamen bittiyse |
using | Otomatik olarak Dispose() eder | Her zaman önerilir |
Close()veyaDispose()kullanmamak için using kullanılabilir.usingNedir ve Neden Kullanılır? yazıma da göz atabilirsiniz.
C#’da Close() ve Dispose() Nedir ve Neden kullanılır konusunu anlatmaya çalıştım. Bu içerik benim için sürekli referans olacak ve elimden geldiğince güncellemeye çalışacağım. İçeriğe katkı sağlamak isterseniz, yorum yazmaktan çekinmeyiniz.
Gönderilere yorum yazabilir, linkedin veya @huseyineskan instagram hesabımdan benimle iletişime geçebilirsiniz.
Yazılım kategorisine buradan göz atabilirsiniz.
