Is it safe to use the same Encoding object from different threads?
By “using” I mean, calling Encoding.GetString(), Encoding.GetBytes() and write some XML with an XmlWriter (created by something like XmlWriter.Create(myStream, new XmlWriterSettings() { Encoding = myEncoding }).
The msdn site states that “Any instance members are not guaranteed to be thread safe”.
So, how can I safely write two XML documents concurrently? (thank you!!)
Yes, it should be safe to use the same
Encodingobject, as it’s designed to be stateless – whereasEncoderandDecoderare stateful, maintaining incomplete characters etc if necessary. I suppose you could write a statefulEncodingclass, but it would be a really bad idea. As far as I’m aware, all of the built-in encoding implementations are stateless and thread-safe.For example, the
Encoding.UTF8,Encoding.ASCIIetc properties are singletons.