大家可能知道在复杂的并且速度较慢的报表,我们就使用先计算数据,然后再缓存起来,然后在访问报表的时候把直接读缓存就行,所以就可能有"重算" 的功能,来更新这个缓存,所以我们就要限制,在有人重算的时候,保证别人不能重算,在单一的时刻只能一个人在重算,我现在就把我刚学的代码共享出来
using System;namespace SigletonPattern.Sigleton...{ /**//// <summary> /// 功能:在C#用双重锁定实现单件模式 /// 编写:jiekeng /// 日期:2006年10月20日 /// </summary> public class DoubLockSigleton ...{ private static volatile DoubLockSigleton instance; /**//// <summary> /// 辅助锁对象,本身没有意义 /// </summary> private static object syncRoot = new Object(); /**//// <summary> /// 构造方法改为Private /// </summary> private DoubLockSigleton() ...{ } public static DoubLockSigleton Instance ...{ get ...{ if (instance == null) ...{ lock (syncRoot) ...{ if (instance == null) instance = new DoubLockSigleton(); return instance; } } else ...{ return null; } } } public static void SetInit() ...{ instance = null; } }}这是核心的代码,我们现在使用客户调用,看看有
DoubLockSigleton s1 = DoubLockSigleton.Instance; if (s1 != null) ...{ Response.Write(s1.ToString()); } else ...{ Response.Write("<script language='javascript'>window.alert('已经有人在重算')</script>"); }然后是进行类的初始化,不然的话老是"有人在重算"那可不行,好了,一个简单的模型就出来了