zoukankan      html  css  js  c++  java
  • 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(
    nullnull);

    }

    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系列文章

  • 相关阅读:
    java static关键字的四种用法
    修改Intellij IDEA模板注解@author变量user内容
    iIDEA: 运行Scala代码右键没有Run选项
    idea 无法创建Scala class 选项解决办法汇总
    scala之idea下如何新建scala工程
    scala之windows环境安装与配置
    @RestController注解
    @component的作用详细介绍
    springboot 日期参数前后台转换问题
    MySQL数据库硬件选择
  • 原文地址:https://www.cnblogs.com/Terrylee/p/Caching_Application_Block_HandsOnLab_Part3.html
Copyright © 2011-2022 走看看