C#中的线程安全和System.Text.Encoding

从不同的线程使用相同的Encoding对象是否安全?

通过“使用”我的意思是,调用Encoding.GetString()Encoding.GetBytes()并用XmlWriter编写一些XML(由XmlWriter.Create(myStream, new XmlWriterSettings() { Encoding = myEncoding })

msdn网站声明“不保证所有实例成员都是线程安全的”。

那么,如何安全地同时编写两个XML文档呢? (谢谢!!)

是的,使用相同的Encoding对象应该是安全的,因为它被设计为无状态 – 而EncoderDecoder是有状态的,必要时保持不完整的字符等。 我想你可以写一个有状态的Encoding类,但这是一个非常糟糕的主意。 据我所知,所有内置编码实现都是无状态和线程安全的。

例如, Encoding.UTF8Encoding.ASCII等属性是单例。