简单数据缓存类(c#)

原创 2006年07月13日 15:26:00

using System;

using System.Data;

using System.Data.SqlClient;

using System.Threading;

 

namespace WJ.Lib.Base

{

     /// <summary>

     /// DateBuffer 的摘要说明。

     /// </summary>

     public class DateBuffer

     {

        int mGetDateType;

        object mobjBuffer;

        string mSql;

        SqlCommand mSqlCom;

        DateTime mFlagDT;

        int mBufferTime;

        Thread m_Thread;

 

        DataTable mdtBuffer;

 

        public DateBuffer()

        {

            mBufferTime = 2;

        }

 

        public DateBuffer(SqlCommand sSqlCom)

        {

            mBufferTime = 2;

            mSqlCom = sSqlCom;

            //从存储过程中获取数据

            mGetDateType = 2;

        }

 

 

        public DateBuffer(string sSql)

        {

            mBufferTime = 2;

            Sql = sSql;

            //从查询语句中获取数据

            mGetDateType = 1;

        }

 

        /// <summary>

        /// 设置缓存时间(分钟)

        /// </summary>

        public int BufferTime

        {

            set

            {

                mBufferTime = value;

            }

        }

 

 

        /// <summary>

        /// 获取缓存数据

        /// </summary>

        public DataTable Buffer

        {

            get

            {

                CheckDate(true);

                return mdtBuffer;

            }

        }

 

        /// <summary>

        /// 设置数据查询存储过程

        /// </summary>

        public SqlCommand SqlCom

        {

            set

            {

                if (mdtBuffer == null)

                {

                    mdtBuffer = new DataTable();

                }

                mSqlCom = value;

                //从存储过程中获取数据

                mGetDateType = 2;

                CheckDate(false);

            }

            get

            {

                return mSqlCom;

            }

        }

 

        /// <summary>

        /// 设置数据查询SQL

        /// </summary>

        public string Sql

        {

            set

            {

                if (mdtBuffer == null)

                {

                    mdtBuffer = new DataTable();

                }

                mSql = value;

                //从查询语句中获取数据

                mGetDateType = 1;

                CheckDate(false);

            }

            get

            {

                return mSql;

            }

        }

 

        /// <summary>

        /// 保持数据更新

        /// </summary>

        void CheckDate(bool CheckTime)

        {

            try

            {

                if (!CheckTime)

                {

                    //需要立即更新数据

                    UpdateDate();

                }

                else if (mFlagDT < DateTime.Now)

                {

                    //更新数据时间超时,采用线程更新数据

                    if(m_Thread == null

                        || (m_Thread.ThreadState != System.Threading.ThreadState.Running

                        && m_Thread.ThreadState != System.Threading.ThreadState.WaitSleepJoin ))

                    {

                        m_Thread = new Thread(new ThreadStart(UpdateDate));

                        m_Thread.Start();

                    }

                }

            }

            catch

            {

            }

        }

 

        void UpdateDate()

        {

            DataTable dt = null;

            try

            {

                if (mGetDateType == 1)

                {

                   //通过查询语句获取表数据

                    dt = GetDateTable(mSql);

                }

                else if(mGetDateType == 2)

                {

                   //通过存储过程获取表数据

                    dt =GetDateTable(ref mSqlCom);

                }

                mFlagDT = DateTime.Now.AddMinutes(mBufferTime);

            }

            catch

            {

            }

            finally

            {

                if (dt != null)

                {

                    mdtBuffer = dt;

                }

            }

        }

 

 

     }

}

 

相关文章推荐

C#数据缓存介绍及Caching通用帮助类整理

C#缓存主要是为了提高数据的读取速度。因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大提高程序的性能,以下为工...

C# 数据缓存

  • 2015年11月02日 16:21
  • 6KB
  • 下载

C#解决串口通信中接收数据时延迟处理与缓存处理的方法

C#解决串口通信中接收数据时延迟处理与缓存处理的方法 时间:2011-1-21 14:04:29 来源:www.cnblogs.com 作者:杨少宁 - - 利用串口进行通信,当发送方(A)...

串口通信中接收数据时延迟处理与缓存处理的解决方案(C#)

利用串口进行通信,当发送方(A)将数据写入串口后,通过无线或有线方式将数据传送给接收方(B),B通过调用串口读方法comm.read(参数)即可将数据读出。原理十分简单,但最近在利用串口处理SM-42...

C#浅谈数据缓存管理

缓存这个东西可大可小,小到一个静态的字段,大到将整个数据库Cache起来。项目开发过程中缓存的应用到处可见,在这篇博文中笔者就来谈谈自己的项目中关于缓存实现。       最常见的缓存功能,如C...

串口通信中接收数据时延迟处理与缓存处理的解决方案(C#)

http://www.cnblogs.com/yangshaoning/archive/2011/01/21/Communication.html 利用串口进行通信,当发送方(A)将数据写入串口后,通...

数据存储在多张表,缓存维度简单设计

概述 为了提升接口的响应速度,通常会使用中央缓存,比如增加一个memcache集群,用于存储热点数据。假设数据表是类似下面这样的:table a{ long id String name ......

一种简单粗暴的数据层网络缓存(二)实现方案

先贴出代码: package com.cache; import android.content.Context; import android.text.TextUtils; impor...
  • aliankg
  • aliankg
  • 2016年11月07日 19:56
  • 214

C# 采用LRU置换算法的缓存类

  • 2013年04月06日 17:38
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单数据缓存类(c#)
举报原因:
原因补充:

(最多只允许输入30个字)