<Mayıs>
PSÇPCCP
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
 
Kayıt Ol

. .Net Framework
. ADO.Net
. ASP.Net, Web Servisleri
. C#, Visual C#
. Delphi.Net
. Diğer
. Mobil.Net
. NetFx
. VB.Net
. Veritabanları
. Visual Studio
. XML

. .Net Framework
. ADO.Net
. ASP.Net, Web Servisleri
. C#, Visual C#
. Delphi.Net
. Diğer
. Mobil.Net
. NetFx
. VB.Net
. Veritabanları
. Visual Studio
. XML

 
 
 
Using Ifadesinin Kullanımı 
Yazar: Abdullah Tarık Güney  - Yazara ait tüm yazılar
Ders Özeti: using kelimesin kullanımın performas üzerindeki etkilerini merak edenler için. 
Okunma: 1937
MaxiPuan: 621
Yazı Kategorisi: C#, Visual C#

Ardaşına Tavsiye Et - Yazdırılabilir Biçim



Bu alana reklam verebilirsiniz

Merhabalar bugünkü makalemizde sizler ile beraber using statement (ifade) ı kullanmayı öğrenmeye çalışacağız. İlk başta using ifadesinin neden kullanıldığını ve ne işe yaradığına bakalım. Bildiğiniz gibi biz programcılar körü körüne program yazmayız yazmamalıyız. Yazdığımız kodlarda önemli noktalardan biride kodlarımızın performansı ve sunucuda tükettiği kaynağın bilinmesidir. Şöyleki minimum kaynak tüketen kodlar yazmak bizim en önemli amaçlarımızdan olmalıdır çünkü 1000 lerce kişinin bağlanabileceği sunucumuzda iş yoğunluğunun düzenlenmesi ve stabilizasyonu önemlidir ve bundada yazdığımız kodların ne kadar önemli olduğu açıktır. Bu durumda bizim en basitinden sistemin ram kaynağının tüketiminin düzenlenmesi ve gereksiz data ların depolanmasını önlemek amacıyla işimizin bittiği nesneleri yok etmemiz gerekecektir. Bu işin yapılmasında bir sürü yöntem vardır ve biz bu yöntemlerden biri olan using ifadesini kullanacağız ve bu ifadenin kolaylığını göstermek amacıyla başka bir yöntem ile karşılaştırma yapacağız.Aşağıdakı kodları inceleyelim :

private void btnBaglan_Click(object sender, System.EventArgs e)
{
    string baglanti = "Server = . ; Database = bilgilerim ; Integrated Security=True";
    string sorgu = "SELECT id, adi FROM Calisanlar";
    SqlConnection conn;
    SqlCommand comm ;
    SqlDataReader okuyucu ;
    try
    {
        conn = new SqlConnection(baglanti);
        comm = new SqlCommand(sorgu,conn);
        conn.Open();
       okuyucu = comm.ExecuteReader();
        while (okuyucu.Read())
        {
            TextBox1.Text += okuyucu["adi"].ToString() + Environment.NewLine;
        }
    }
    catch(Exception ex)
    {
        Label1.Text = ex.Message;
    }
    finally
    {
        if ((okuyucu != null) && (!okuyucu.IsClosed))
            okuyucu.Close();
        if (comm != null)
            comm.Dispose();
        if (coon != null)
            conn2.Dispose();
    }
}

Evet arkadaşlar kodlara baktığımız zaman görüyoruz ki nesnelerimiz oluşturulmuş try{ }bloğu içinde ve hata varsa yakalanması içinde catch { } konmuş ve işimiz bittikten sonra yok edilmesi amacıylada finally { }bloğumuza nesnelerimizin yok edilmesi ve gereksiz bellek israfının engellemek amacıylada Dispose( ) metodu uygulanmış ama dikkat ederseniz unutulması mümkün bir kodlama türü ve hemde uzun. Unutulması mümkün diyorum çünkü bizler böyle 10 satırlık kodlar ile değilde binlerce satır kod yazdığımız zaman bir bakmışsınız finally bloğumuz yok ki zaten asp.net finally bloğu olmayınca hata da vermiyor ve bu kodlar her çalıştığında şişen belleğimiz. Acı bir tablo olsa gerek ama şimdi onun yerine şimdi daha farklı bir yöntem olan using ifadesine bakalım. Kodlarımız hemen aşağıdadır :

private void btnBaglan2_Click(object sender, System.EventArgs e)
{
    string baglanti2 = "Server=. ; Database=bilgilerim2 ; Integrated Security=True";
    string sorgu2 = "SELECT id, adi FROM Calisanlar ";
    try
    {
        using (SqlConnection conn2 = new SqlConnection(baglanti2))
        {
            using (SqlCommand comm2 = new SqlCommand(sorgu2, conn2))
            {
                conn2.Open();
                using (SqlDataReader okuyucu2 = comm2.ExecuteReader())
                {
                    while (okuyucu2.Read())
                    {
                        TextBox1.Text += okuyucu2["CategoryName"].ToString() + Environment.NewLine;
                    }
                }
            }
        }
    }
    catch(Exception ex)
    {
        Label1.Text = ex.Message;
    }
}

Evet farkı görebildiniz mi hem kod azaldı hemde nesnelerin Close( ) ile kapatılıp Dispose( ) ile yok edilmedi. Hem daha az hemde çok kod yazımında kod okunurluğunu arttıracaktır değil mi ? Kodları incelersek using içine aldığımızı görürüz nesnelerimiz ile alakalı kodları.Nesnemizi oluşturuyoruz ve işimiz bitince using ifadesi sayesinde yok ediliyor. Bu arada şahsen ben Microsofta çalışanların bu yapıyı fazlasıyla kullandıkları okudum. Demek istediğim bizde çok kullanılmayan ama ne kadar kolay ve kullanılabilir bir yapı olduğu.

Umarım faydalı bir anlatım olmuştur.

Kolay Gelsin.

Bu dersi değerlendirin

Bu içerik ile ilgili daha önce yapılmış yorumlar
1. gercekten guzel bir noktaya deginmissiniz. tesekkurler...

masterc# - 15.03.2007 00:53:41

2. Makalelerinizin devamını heyecanla bekliyorum kolay gelsin...

erhan - 14.03.2007 15:16:56

Bu içerik hakkında yorum yazınız:

 

İsim:  
Email:  
Başlık:  
Yorum:  

 

anasayfa | dersler | örnek kodlar | forum | kaynaklar | dosyalar | biz kimiz ? | bir önerim var |  iletişim | hata bildir | reklam

MaxiASP.Net Rss Kaynağı:

Copyright 2002 - 2006 MaxiASP.Net (v 1.9) - Tüm Hakları Saklıdır.
 Alan Adı ve Bulundurma: Radore Hosting