程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Enterprise Library 2.0 Hands On Lab 翻譯(11):緩存應用程序塊(三)

Enterprise Library 2.0 Hands On Lab 翻譯(11):緩存應用程序塊(三)

編輯:關於ASP.NET

練習3:實現後台緩存

該練習將示范如何實現後台加載。

第一步

打開EmployeeBrowser.sln 項目,默認的安裝路徑應該為C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Caching\exercises\ex03\begin,並編譯。

第二步 實現後台加載

1.在解決方案管理器中選擇EmployeeServices.cs文件,選擇View | Code菜單命令,添加如下兩個方法,它們將實現在後台加載緩存。

// TODO: PopulateCache & BeginBackgroundLoad
private static void PopulateCache()
{
  byte[] photoData = null;
  EmployeesDataSet dsEmployees = GetContactDetails();
  if (dsEmployees == null)
    return;
  CacheManager cache = CacheFactory.GetCacheManager();
  foreach (EmployeesDataSet.EmployeesRow employee in dsEmployees.Employees)
  {
    if (!cache.Contains(employee.EmployeeID.ToString()))
    {
      EmployeeDataProvider dataProvider = new EmployeeDataProvider();
      photoData = dataProvider.GetEmployeePhotoData(employee.EmployeeID);
      cache.Add(employee.EmployeeID.ToString(), photoData);
    }
  }
}
private delegate void PopulateCacheDelegate();
public static void BeginBackgroundLoad()
{
  if (!ConnectionManager.IsOnline)
    return;
  PopulateCacheDelegate mi = new PopulateCacheDelegate(PopulateCache);
  mi.BeginInvoke(null, null);
}

BeginBackgroundLoad方法使用一個委托在後台線程開始PopulateCache方法,它將會被.NET工作線程處理。

2.選擇MainForm.cs文件,選擇View | Code菜單命令,在方法MainForm_Load中加入如下代碼開始後台工作。

private void MainForm_Load(object sender, EventArgs e)
{
  this.ToolStripLabel1.Text = ConnectionManager.StatusText;
  // Load data into the 'EmployeesDataSet'.
  EmployeesDataSet tempDataset = EmployeeService.GetContactDetails();
  if (tempDataset != null)
    this.EmployeesDataSet.Merge(tempDataset);
  // TODO: Start loading cache in the background
  EmployeeService.BeginBackgroundLoad();
}

第三步 運行應用程序

1.選擇Debug | Start Without Debugging菜單命令運行應用程序。

不要浏覽任何雇員數據,在等待大概10秒後退出應用程序。如果應用程序在線它將嘗試後台加載雇員照片,緩存存儲在物理存儲位置上,即持久緩存,但是與前一個練習使用了不同的PartitionName。

2.在解決方案管理器中選擇ConnectionManager.cs,選擇View | Code菜單命令,在下面的代碼中修改IsOnline屬性的值。

static public bool IsOnline
{
  get { return false; }
}

3.選擇Debug | Start Without Debugging菜單命令運行應用程序。現在應用程序不再連接數據庫處於離線狀態,所有的雇員信息已經照片已經被緩存。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved