惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

博客园 - jiekengxu

工厂方法模式(Factory Method Pattern) 生成器模式(Builder) 抽象工厂模式(Abstract Factory Pattern) asp.net 2.0 权限树的控制(多处转载) 中小型项目的权限管理的数据关系图 简陋的会计凭证金额输入控件(再加强) Web Services Enhancements 3.0 Quick Start(四) 初识HTC asp.net 2.0 缓存(页面输出缓存) asp.net 2.0 缓存(理论篇) 智能客户端概述 Web Services Enhancements 3.0 Quick Start(三) 简陋的会计凭证金额输入控件(加强) Web Services Enhancements 3.0 Quick Start(二) 简陋的会计凭证金额输入控件 Web Services Enhancements 3.0 Quick Start(一) 利用AJAX.net设计现在执行运算的报表 Web Service Software Factory 构架 Web Service Software Factory 入门
单件模式在报表中的使用
jiekengxu · 2006-10-23 · via 博客园 - jiekengxu

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

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

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