Enterprise Library 2.0 Hands On Lab 翻譯(11):緩存應用程序塊(三)
練習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菜單命令運行應用程序。現在應用程序不再連接數據庫處于離線狀態,所有的雇員信息已經照片已經被緩存。
更多Enterprise Library的文章請參考《Enterprise Library系列文章》
支持TerryLee的創業產品Worktile
Worktile,新一代簡單好用、體驗極致的團隊協同、項目管理工具,讓你和你的團隊隨時隨地一起工作。完全免費,現在就去了解一下吧。
https://worktile.com
Worktile,新一代簡單好用、體驗極致的團隊協同、項目管理工具,讓你和你的團隊隨時隨地一起工作。完全免費,現在就去了解一下吧。
https://worktile.com



浙公網安備 33010602011771號