首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

Enterprise Library 2.0 Hands On Lab 翻譯(11):快取應用程式區塊(三)

     編輯:關於ASP.NET

練習 3:實作背景快取

示範如何實作背景載入快取。

步驟 1:開啟專案

開啟 EmployeeBrowser.sln,預設路徑 C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Caching\exercises\ex03\begin,編譯。

步驟 2:實作背景載入

  1. 開啟 EmployeeServices.cs,加入兩個方法:
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 執行緒池處理。

  1. 開啟 MainForm.cs,在 MainForm_Load 加入啟動背景工作:
private void MainForm_Load(object sender, EventArgs e)
{
    this.ToolStripLabel1.Text = ConnectionManager.StatusText;
    EmployeesDataSet tempDataset = EmployeeService.GetContactDetails();
    if (tempDataset != null)
        this.EmployeesDataSet.Merge(tempDataset);
    EmployeeService.BeginBackgroundLoad();
}

步驟 3:執行驗證

  1. 執行應用程式,不瀏覽員工資料,等待約 10 秒後結束。若在線會嘗試背景載入員工照片,快取儲存於實體儲存位置(持久快取),但使用不同的 PartitionName
  2. 修改 ConnectionManager.cs 中 IsOnline 回傳 false
  3. 再次執行,應用程式處於離線狀態,所有員工資訊與照片已快取可用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved