asp.net中通过单例保存全局参数

Posted tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net中通过单例保存全局参数相关的知识,希望对你有一定的参考价值。

摘要

有这样一个service,需要运行的asp.net站点上,但要保证这个实例是唯一的。单例用来启用聊天机器人,保证唯一,以免启动多个,造成客户端发送消息的时候,会造成每个机器人都发送消息,app收到多条消息。

Demo

单例类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Wolfy.SingleDemo.Models
{
    public class SingleParameter
    {
        private static SingleParameter instance;
        private static readonly object obj = new object();
        private static List<string> Names;
        public static SingleParameter CreateInstance()
        {
            if (instance == null)
            {
                lock (obj)
                {
                    if (instance == null)
                    {
                        instance = new SingleParameter();
                    }
                }
            }
            return instance;
        }
        private SingleParameter()
        {
            Names = new List<string>();
        }
        public  void Remove(string name)
        {
            lock (obj)
            {
                for (int i = Names.Count - 1; i >= 0; i--)
                {
                    if (Names[i] == name)
                    {
                        Names.RemoveAt(i);
                    }
                }
            }
        }
        public  void Set(string name)
        {
            lock (obj)
            {
                if (!Names.Contains(name))
                {
                    Names.Add(name);
                }
               
            }
        }
        public  List<string> GetNames()
        {
            lock (obj)
            {
                return Names;
            }
        }
    }
}

测试例子

在视图List中展示添加了哪些name,在视图Add中添加name,通过刷新list查看是否已经保存在了集合中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Wolfy.SingleDemo.Models;

namespace Wolfy.SingleDemo.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult List()
        {
            SingleParameter single = SingleParameter.CreateInstance();
            for (int i = 0; i < 10; i++)
            {
                single.Set((i + 1).ToString());
            }
            return View(single.GetNames());
        }
        public ActionResult Add(string name)
        {
            SingleParameter single = SingleParameter.CreateInstance();
            single.Set(name);
            return View(single.GetNames());
        }
    }
}

结果

以上是关于asp.net中通过单例保存全局参数的主要内容,如果未能解决你的问题,请参考以下文章

ASP.net MVC 代码片段问题中的 Jqgrid 实现

你研究过单例么?这样写单例效率最高.

Asp.Net 将HTML中通过dom-to-image.js标签div内的内容转化为图片保存到本地

js设计模式---单例模式

在 ASP.NET 代码中通过 javascript 重置 Jquery 验证后停止回发

asp.net页面实用代码片段

(c)2006-2024 SYSTEM All Rights Reserved IT常识