Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 665

Эндрю Троелсен

‹%@ Application Language="C#" %›

‹%@ Import Namespace = "System.Data.SqlClient" %›

‹%@ Import Namespace = "System.Data" %›

‹script runat="server"›

// Определение статического члена-переменной типа Cache.

static Cache theCache;

void Application_Start(Object sender, EventArgs e) {

 // Присваивание значения статической переменной 'theCache' .

 theCache = Context.Cache;

 // При запуске приложения читается текущая запись

 // таблицы Inventory базы данных Cars.

 SqlConnection cn = new SqlConnection("data source=localhost;initial catalog=Cars; user id='sa';pwd=''");

 SqlDataAdapter dAdapt = new SqlDataAdapter("Select * From Inventory", cn);

 DataSet theCars = new dataSet(); dAdapt.Fill(theCars, "Inventory");

 // Сохранение DataSet в кэше.

 theCache.Insert("AppDataSet", theCars, null,

  DateTime.Now.AddSeconds(15), Cache.NoSlidingExpiration, CacheItemPrioritу.Default,

  new CacheItemRemovedCallback(UpdateCarInventory));

}

// Цель делегата CacheItemRemovedCallback.

static void UpdateCarInventorу(string key, object item, CacheItemRemovedReason reason) {

 // Заполнение DataSet.

 SqlConnection cn = new SqlConnection("data source=localhost;initial catalog=Cars; user id = 'sa';pwd=''");

 SqlDataAdapter dAdapt = new SqlDataAdapter("Select * From Inventory", cn);

 DataSet theCars = new DataSet();

 dAdapt.Fill(theCars, "Inventory");

 // Сохранение в кэше.

 theCache.Insert("AppDataSet", theCars, null,

  DateTime.Now.AddSeconds(15), Cache.NoSlidingExpiration, CacheItemPriority.Default,

  new CasheItemRemovedCallback(UpdateCarInventory));

}

‹/script›

Сначала обратите внимание на то, что тип Global определяет статическую переменную типа Cache. Причина в том, что определяется также статическая функция (UpdateCarInventory()), которой требуется доступ к Cache (напомним, что статические члены не имеют доступа к наследуемым членам, поэтому в данном случае вы не сможете использовать свойство Context).

Внутри обработчика событий Application_Start() заполняется тип DataSet, который затем помещается в кэш приложения. Должно быть ясно, что метод Context.Cache.Insert() перегружен. Ниже объясняются значения каждого из параметров этого метода.

// Сохранение в кэше.

theCache.Insert("AppDataSet", // Имя для идентификации элемента.

 theCars, // Объект для отправки в кэш.

 null, // Зависимости для объекта.

 DateTime.Now.AddSeconds(15), // Длительность пребывания в кэше.

 Cache.NoSlidingExpiration, // Фиксированное или скользящее время.

 CacheItemPriority.Default, // Приоритет элемента.