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;
+ }
}
///