diff --git a/src/SIL.LCModel/Infrastructure/Impl/LcmMetaDataCache.cs b/src/SIL.LCModel/Infrastructure/Impl/LcmMetaDataCache.cs index c2646c2b..b1e6886b 100644 --- a/src/SIL.LCModel/Infrastructure/Impl/LcmMetaDataCache.cs +++ b/src/SIL.LCModel/Infrastructure/Impl/LcmMetaDataCache.cs @@ -69,25 +69,29 @@ internal sealed class LcmMetaDataCache : IFwMetaDataCacheManaged, IFwMetaDataCac #endregion Data Members for IFwMetaDataCache Support #region Construction + private static readonly object s_constructorLock = new object(); /// /// Constructor. /// internal LcmMetaDataCache() { - m_initialized = false; + lock (s_constructorLock) + { + m_initialized = false; - // Reset static counters for attrs. - VirtualPropertyAttribute.ResetFlidCounter(); - FieldDescription.ClearDataAbout(); + // Reset static counters for attrs. + VirtualPropertyAttribute.ResetFlidCounter(); + FieldDescription.ClearDataAbout(); - var cmObjectTypesBaseFirst = CmObjectTypesBaseFirst(); + var cmObjectTypesBaseFirst = CmObjectTypesBaseFirst(); - CmObjectSurrogate.InitializeConstructors(cmObjectTypesBaseFirst); + CmObjectSurrogate.InitializeConstructors(cmObjectTypesBaseFirst); - InitializeMetaDataCache(cmObjectTypesBaseFirst); + InitializeMetaDataCache(cmObjectTypesBaseFirst); - m_initialized = true; + m_initialized = true; + } } ///