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

tha*_*ler 19 c# thread-safety

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

通过"使用"我的意思是,打电话Encoding.GetString(),Encoding.GetBytes()写一些XML与XmlWriter(由类似于创建XmlWriter.Create(myStream, new XmlWriterSettings() { Encoding = myEncoding }).

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

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

Jon*_*eet 25

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

例如,Encoding.UTF8,Encoding.ASCII等性质是单例.