/// <summary>
        ///  两个If  进行两次安全检查   同样的做法还有Syste.DBNull,System.Reflection.Missing 设计
        ///  以 公开的静态的方法返回 对象
        /// </summary>
        /// <returns></returns>
        public static MySingleton GetSingleton()
        {

          Debug.WriteIf(s_value == null, "  s_value is  null");
            if (s_value != null) return s_value;
            Monitor.Enter(s_lock);
            if (s_value == null)
            {
                //如果仍旧没有创建实例,则创建一个
                MySingleton temp = new MySingleton();
                //讲引用保存到s_value 中
                Interlocked.Exchange(ref s_value, temp);
            }
            Monitor.Exit(s_lock);
            return s_value;
        }
Exemple #2
0
 /// <summary>
 ///  两个If  进行两次安全检查   同样的做法还有Syste.DBNull,System.Reflection.Missing 设计
 ///  以 公开的静态的方法返回 对象
 /// </summary>
 /// <returns></returns>
 public static MySingleton GetSingleton()
 {
     Debug.WriteIf(s_value == null, "  s_value is  null");
     if (s_value != null)
     {
         return(s_value);
     }
     Monitor.Enter(s_lock);
     if (s_value == null)
     {
         //如果仍旧没有创建实例,则创建一个
         MySingleton temp = new MySingleton();
         //讲引用保存到s_value 中
         Interlocked.Exchange(ref s_value, temp);
     }
     Monitor.Exit(s_lock);
     return(s_value);
 }