public sealed class Singleton { //线程安全单例实现模式 //Double-Checked Locking 模式 //单例的实例由CLR保证只在首次引用它时才会被创建 /// <summary> /// 多线程情况下控制资源 /// </summary> private static object syncRoot = new Object(); private Singleton() { } private static volatile Singleton _instance; public static Singleton Instance { get { if (_instance == null) { //注意: 这里锁定的是syncRoot,而不是本身,这可以避免产生死锁 lock (syncRoot) { if (_instance == null) _instance = new Singleton(); } } return _instance; } } }