定义一个singleton对象,其中包括这个Hashtable的对象,这个singleton向外提供读写Hashtable对象的接口,也就是作为一个wrapper   facade。这样,多线程可以共享这个singleton对象来访问hashtable。 
singleton对象必须使用双检查校验模式,或者使用微软C#特有的singleton模式,以确保线程安全!上面的这些没有弄过,请高手给出一个范例参考参考,谢谢。

解决方案 »

  1.   

    class singleton
    {
    private static readyonly singleton _singleton= new singleton();
    private Hashtable _hashTable = new Hashtable();
    private singleton()
    {
    }
    public static singleton GetInstance()
    {
    return _singleton;
    }public void Add(object key, object value)
    {
    _hashTable.Add(key, value);
    }
    public object Get(object key)
    {
    return _hashTable[key];
    }
    }
      

  2.   

    外面调用
    singleton.GetInstance().Add("hello", "world");
    Console.Write(singleton.GetInstance.Get("hello"));
      

  3.   


    private class ClassA
    {
        #region 双检锁
        private static object m_syn = new object();        
        private static ClassA m_Instance;        
        /// <summary>
        /// 获取对象
        /// </summary>
        public static ClassA Instance
        {
         get
         {
         // 非空判断
         if (m_Instance == null)
         {
         // 锁定
         lock(m_syn)
         {             
         // 非空判断
         if (m_Instance == null)
         {  
         m_Instance = new ClassA();
         }
         }
         }
         return m_Instance;
         }
        }
        
        /// <summary>
        /// 私有构造函数
        /// </summary>
        private ClassA()
        {
        }
        #endregion 双检锁 结束
    }
      

  4.   

    微软不保证DCL在多处理器下的的安全使用贪婪加载代替DCL。