diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-08-08 18:15:37 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-08-08 18:15:37 -0400 |
| commit | bb0618f6083bb7dc8f5f7de7a65e2b8aa50f629b (patch) | |
| tree | 45630123804f7c5d45544d19a7de583dffda016e /MediaBrowser.Common.Implementations/Serialization/XmlSerializer.cs | |
| parent | d71a468388335d407ef73e933bddb59c4f2b4d1d (diff) | |
fixes #2041 - Error when altering and saving user settings
Diffstat (limited to 'MediaBrowser.Common.Implementations/Serialization/XmlSerializer.cs')
| -rw-r--r-- | MediaBrowser.Common.Implementations/Serialization/XmlSerializer.cs | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/MediaBrowser.Common.Implementations/Serialization/XmlSerializer.cs b/MediaBrowser.Common.Implementations/Serialization/XmlSerializer.cs index 756741e0d..77f65b0c7 100644 --- a/MediaBrowser.Common.Implementations/Serialization/XmlSerializer.cs +++ b/MediaBrowser.Common.Implementations/Serialization/XmlSerializer.cs @@ -1,6 +1,7 @@ using MediaBrowser.Model.Serialization; using System; using System.Collections.Concurrent; +using System.Collections.Generic; using System.IO; using System.Xml; using CommonIO; @@ -24,13 +25,22 @@ namespace MediaBrowser.Common.Implementations.Serialization // Need to cache these // http://dotnetcodebox.blogspot.com/2013/01/xmlserializer-class-may-result-in.html - private readonly ConcurrentDictionary<string, System.Xml.Serialization.XmlSerializer> _serializers = - new ConcurrentDictionary<string, System.Xml.Serialization.XmlSerializer>(); + private readonly Dictionary<string, System.Xml.Serialization.XmlSerializer> _serializers = + new Dictionary<string, System.Xml.Serialization.XmlSerializer>(); private System.Xml.Serialization.XmlSerializer GetSerializer(Type type) { var key = type.FullName; - return _serializers.GetOrAdd(key, k => new System.Xml.Serialization.XmlSerializer(type)); + lock (_serializers) + { + System.Xml.Serialization.XmlSerializer serializer; + if (!_serializers.TryGetValue(key, out serializer)) + { + serializer = new System.Xml.Serialization.XmlSerializer(type); + _serializers[key] = serializer; + } + return serializer; + } } /// <summary> |
