单件模式在报表中的使用

王朝other·作者佚名  2007-06-15
窄屏简体版  字體: |||超大  

大家可能知道在复杂的并且速度较慢的报表,我们就使用先计算数据,然后再缓存起来,然后在访问报表的时候把直接读缓存就行,所以就可能有"重算" 的功能,来更新这个缓存,所以我们就要限制,在有人重算的时候,保证别人不能重算,在单一的时刻只能一个人在重算,我现在就把我刚学的代码共享出来

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>");

}

然后是进行类的初始化,不然的话老是"有人在重算"那可不行,好了,一个简单的模型就出来了

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航