[*] Hello Snoopy

.NET and Flash Blog
使用Microsoft Application Block之Cache Application

关于caching application block可以从http://www.microsoft.com/resources/practices/default.mspx下载

这里我们介绍一下简单的使用

1.建立一个windows form的测试程序

textbox用来显示cache的内容,button用来获取cache项.程序不能在简单了哦.

2.添加Cache的引用(在block的安装目录,直接copy过来):

Microsoft.ApplicationBlocks.Cache.dll
Microsoft.ApplicationBlocks.Data.dll
Microsoft.ApplicationBlocks.ExceptionManagement.dll
Microsoft.ApplicationBlocks.ExceptionManagement.Interfaces.dll
MemoryMappedFileStream.dll

3.配置config文件

因为是win form,所以添加一个app.config,如果是web引用,则对应web.config文件.

默认的文件示例:C:\Program Files\Microsoft Application Blocks for .NET\Caching Framework\Code\CS\Solution Items

这里我们直接copy app.config的内容吧.

好了,所有部署就完成了,下面来看看code

 

using System.Data;
using Microsoft.ApplicationBlocks.Cache;

namespace WinApp_Block_Cache
{
    
/// <summary>
    
/// Form1 的摘要说明。
    
/// </summary>

    public class Form1 : System.Windows.Forms.Form
    
{
        
private System.Windows.Forms.Button button1;
        
private System.Windows.Forms.TextBox textBox1;

        
private void button1_Click(object sender, System.EventArgs e)
        
{
            
this.textBox1.Text = (string)GetCachedItem("hello");    
        }

        
private object GetCachedItem(string itemName)
        
{
            
//获取Cache管理的singlton
            CacheManager cacheMgr = CacheManager.GetCacheManager();
            
object obj = cacheMgr.GetData(itemName);
            
if(obj == null)
            
{
                
//下面是ExtendedFormatTime设置释义
                /// <remarks>
                
/// Extended format sintax : <br/><br/>
                
/// 
                
/// Minute       - 0-59 <br/>
                
/// Hour         - 0-23 <br/>
                
/// Day of month - 1-31 <br/>
                
/// Month        - 1-12 <br/>
                
/// Day of week  - 0-7 (Sunday is 0 or 7) <br/>
                
/// Wildcards    - * means run every <br/>
                
/// Examples: <br/>
                
/// * * * * *    - expire every minute of every day <br/>
                
/// 5 * * * *    - expire 5th minute of every hour or every minute
                
///                   after 1 hour from the last used time, whichever
                
///                   is earlier <br/>
                
/// * 21 * * *   - expire every minute of the 21st hour of every day 
                
///                   or one hour after every day<br/>
                
/// 31 15 * * *  - expire 3:31 PM every day <br/>
                
/// 7 4 * * 6    - expire Saturday 4:07 AM <br/>
                
/// 15 21 4 7 *  - expire 9:15 PM on 4 July <br/>
                
/// </remarks>

                Microsoft.ApplicationBlocks.Cache.ICacheItemExpiration[] exps = 
                    
{
                        
//设置cache过期依赖,这里设置1分钟后过期.
                        
//你可以设置多个过期依赖项,该block提供如下四种过期依赖:
                        
//AbsoluteTime
                        
//ExtendedFormatTime
                        
//FileDependency
                        
//SlidingTime

                        
new Microsoft.ApplicationBlocks.Cache.Expirations.ExtendedFormatTime("* * * * *")
                    }
;
                obj 
= "hello world!!" + DateTime.Now.Millisecond.ToString();

                
//如果不想对cache过期事件处理,可把callback设为null
                
//这里我们用CacheExpiredProcess来处理cache的过期
                cacheMgr.Add(itemName,
                    obj,
                    exps,
                    CacheItemPriority.High,
                    
new CacheItemRemovedCallback(CacheExpiredProcess));
            }

            
return obj;
        }

        
//设置了一个处理过期事件函数
        private void CacheExpiredProcess(string cacheKey,CacheItemRemoveCause cause)
        
{
            MessageBox.Show(cacheKey 
+ " is expired!");
        }


    }

}

posted on 2004-12-26 14:36  HelloSnoopy  阅读(761)  评论(0)    收藏  举报