asp.net单例模式
目的:保证一个类只有一个单一的实例
好处:1.在资源共享的情况下,避免由多个操作而导致的资源消耗;2.提供可变数目的实例。
标准的单例代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace SinglePattern
{
public class SingleClass
{
private static SingleClass instance = null; /// <summary>
/// 构造函数
/// </summary>
protected SingleClass()
{ } public static SingleClass GetInstance()
{
if (instance == null)
{
instance = new SingleClass();
}
return instance;
}
}
}
上述是一个标准的单例,如果需要有多个线程访问,可能会产生多个实例,因此,此处需要加上锁,以保证同一时间只能有一个线程访问:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace SinglePattern
{
public class SingleClass
{
// 静态实例变量
private static SingleClass instance = null;
// 互斥锁
private static object objlock = new object(); /// <summary>
/// 受保护的构造函数
/// </summary>
protected SingleClass()
{ } public static SingleClass GetInstance()
{
lock (objlock)
{
if (instance == null)
{
instance = new SingleClass();
}
return instance;
}
}
}
}
优化下,保证一个窗口只能启动一个实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading; namespace SinglePattern
{
public class SingleClass
{
// 静态实例变量
private static SingleClass instance = null;
/// <summary>
/// 受保护的构造函数
/// </summary>
protected SingleClass()
{ } public static SingleClass GetInstance()
{
// 进程同步
Mutex mutex = new Mutex();
mutex.WaitOne();
if (instance == null)
{
instance = new SingleClass();
}
mutex.Close();
return instance;
}
}
}
asp.net单例模式的更多相关文章
- asp.net—单例模式
一.单例模式是什么? 定义:确保一个类仅仅能产生一个实例,并且提供一个全局访问点来获取该实例. 二.单例模式怎么用? class SingleCase { public string Name{get ...
- ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开
ASP.NET MVC Filters 4种默认过滤器的使用[附示例] 过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...
- 在ASP.NET Web API中使用OData的单例模式
从OData v4开始增加了对单例模式的支持,我们不用每次根据主键等来获取某个EDM,就像在C#中使用单例模式一样.实现方式大致需要两步: 1.在需要实现单例模式的导航属性上加上[Singleton] ...
- asp.net中WinForm使用单例模式示例
例如在Windows应用程序中用下面代码打开一个窗体: 代码如下 复制代码 private void button1_Click(object sender, EventArgs e){ (new A ...
- Asp.Net 设计模式 之 “特殊”的单例模式
特殊的单例模式 要点在这里,提前预览: public SingleDemo() { name = "yy"; age = 20; //特殊的单例,this指代得失当前的Single ...
- Asp.Net 设计模式 之 单例模式
一.设计目的:让项目中只显示一个实例对象 二.设计步骤: 创建一个类: 构建类类型静态变量: 定义返回值类为单例类型的静态方法: 判断静态变量instance是否为空:如果为空,就创建实例,然后给单例 ...
- C#工具:ASP.NET MVC单例模式(懒汉)实现文件上传
1.SingletonConfigRead帮助类 using System; using System.Collections.Generic; using System.IO; using Syst ...
- ASP.NET Core中如影随形的”依赖注入”[下]: 历数依赖注入的N种玩法
在对ASP.NET Core管道中关于依赖注入的两个核心对象(ServiceCollection和ServiceProvider)有了足够的认识之后,我们将关注的目光转移到编程层面.在ASP.NET ...
- 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的
我们在<服务器在管道中的"龙头"地位>中对ASP.NET Core默认提供的具有跨平台能力的KestrelServer进行了介绍,为了让读者朋友们对管道中的服务器具有更 ...
随机推荐
- Android事件处理
含义:为用户动作提供响应就是事件处理. Android提供了强大的事件处理机制:基于监听的事件处理.基于回调的事件处理. 一.基于监听的事件处理 监听的处理模型主要涉及三类对象 >Event S ...
- input相关问题总结
1. 禁止为所有被激活的输入框添加边框 *:focus {outline: none} 2. 禁止为被激活的输入框添加边框,说明:".abc"为输入框对象自定义添加的class类命 ...
- 【HDU1914 The Stable Marriage Problem】稳定婚姻问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1914 题目大意:问题大概是这样:有一个社团里有n个女生和n个男生,每位女生按照她的偏爱程度将男生排序, ...
- Ansible (一)
epel rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm yum -y ins ...
- Web前端开发基础 第一天(Html和CSS)
学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的: 1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户 ...
- 数据库---MySQL常用函数总结
一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于 ...
- javascript:正则大全
:replace函数,为写自己的js模板做准备 待完善 function 1,声明&用法 //数组: var arr=[];//字面量 var arr=new Array();//构造函数 / ...
- java跳出外部循环
java跳出外部循环两种方法 //用flag标识 boolean flag = true; for(int i=0;i<10&&flag;i++){ for(int j=0;j& ...
- Ruby--strftime
-- [17 Oct 2016 05:37:18AM]:%e %b %Y %H:%M:%S%p -- [Oct 17, 2016]:%b %d, %Y -- [10-17-16 05:37]:%m-% ...
- ant build utf-8
使用Ant编译过程中,报error: unmappable character for encoding UTF8 最简单的方法是在Build.xml文件中,在所有出现Javac的地方,增加一个选项: ...