Asp.net Cache Class

public class CacheHelper
{
    private static Cache cache;
    private static object obj;

    static CacheHelper()
    {
        cache = HttpContext.Current.Cache;
        obj = new object();
    }

    public static DataTable GetProductsThreadSafe()
    {
        //Bu desende ise Cache nesnesine eş zamanlı gelecek birden fazla talepten sadece ilk gelen talep
        //Cache nesnesini olusturacaktir
        if (cache["Products"] == null)
        {
            lock (obj) //Burada obj nesnesi kilitlenerek farklı thread'lerin blok içerisine erişimi engellenmektedir
            {
                if (cache["Products"] == null)
                {
                    SqlConnection con = new SqlConnection("data source=localhost; database=Northwind; integrated security=true");
                    SqlDataAdapter da = new SqlDataAdapter(" Select * From Products; Waitfor delay '00:00:20'", con);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    cache.Insert("Products", dt, null, DateTime.Now.AddMinutes(5),System.Web.Caching.Cache.NoSlidingExpiration);
                 }
             }
    }

    return (DataTable) cache["Products"];
    }
}

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s