• LINQ数据库连接对象制造工厂


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.Linq;
    using System.Threading;

    namespace Data
    {
    /// <summary>
    /// LINQ数据库连接对象制造工厂
    /// </summary>
    static internal class DataContextFactory
    {

    static System.Timers.Timer sysTimer = new System.Timers.Timer(10000);

    volatile static Dictionary<Thread, DataContext[]> divDataContext = new Dictionary<Thread, DataContext[]>();

    static public int DataContextCount { get { return divDataContext.Count; } }

    static DataContextFactory()
    {
    sysTimer.AutoReset = true;
    sysTimer.Enabled = true;
    sysTimer.Elapsed += new System.Timers.ElapsedEventHandler(sysTimer_Elapsed);
    sysTimer.Start();
    }

    static void sysTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
    List<Thread> list = new List<Thread>();
    foreach (Thread item in divDataContext.Keys)
    {
    if (item.ThreadState == ThreadState.Stopped)
    {
    list.Add(item);
    }
    }
    for (int index = 0; index < list.Count; index++)
    {
    divDataContext.Remove(list[index]);
    list[index] = null;
    }
    list = null;
    }

    /// <summary>
    /// 通过工厂的制造模式获取相应的LINQ数据库连接对象
    /// </summary>
    /// <param name="dbName">数据库名称(需要与真实数据库名称保持一致)</param>
    /// <returns>LINQ数据库连接对象</returns>
    public static DataContext Intance(string dbName)
    {
    return Intance(dbName, Thread.CurrentThread);
    }
    /// <summary>
    /// 通过工厂的制造模式获取相应的LINQ数据库连接对象
    /// </summary>
    /// <param name="dbName">数据库名称(需要与真实数据库名称保持一致)</param>
    /// <param name="thread">当前线程引用的对象</param>
    /// <returns>LINQ数据库连接对象</returns>
    public static DataContext Intance(string dbName, Thread thread)
    {
    if (!divDataContext.Keys.Contains(thread))
    {
    divDataContext.Add(thread, new DataContext[4]);
    }
    if (dbName.Equals("zzl"))
    {
    if (divDataContext[thread][0] == null)
    {
    divDataContext[thread][0] = new Data.LinqzzlDataContext();
    }
    return divDataContext[thread][0];
    }
    else
    {
    return null;
    }
    }
    }
    }

  • 相关阅读:
    【新阁教育】能不能让你的电脑变成一台PLC?
    【新阁教育】针对零基础小白的SQL2012安装攻略完整版
    【新阁教育】穷学上位机系列——搭建STEP7仿真环境
    【新阁教育】做了这么久,才知道什么是上位机
    【新阁教育】S7.NET+Log4Net+SQLSugar+MySQL搭建Iot平台
    【新阁教育】基于ModbusTCP实现西门子1200PLC定位控制案例
    C#数据结构-二叉树-链式存储结构
    C#数据结构-二叉树-顺序存储结构
    DataTable 将一列转为List
    字符串匹配—KMP算法
  • 原文地址:https://www.cnblogs.com/niuzaihenmang/p/5602546.html
Copyright © 2020-2023  润新知