//对AppConfig对象的GetInstance加锁 private static void AsyncCreateAppConfigWithLock() { AppConfigWithLock appConfig1 = null; AppConfigWithLock appConfig2 = null; Action createA = () => appConfig1 = AppConfigWithLock.GetInstance(); Action createB = () => appConfig2 = AppConfigWithLock.GetInstance(); Parallel.Invoke(createA, createB); Console.WriteLine(object.ReferenceEquals(appConfig1, appConfig2)); Console.ReadKey(); }
//获取唯一实例 public static AppConfigWithLock GetInstance() { if (appConfig == null) { lock (asyncRoot) { if (appConfig == null) { appConfig = new AppConfigWithLock(); } } } return(appConfig); }