我想缓存DataContractSerializer
多个线程同时使用的单个实例,以避免为同一根类型多次实例化序列化程序的惩罚。每个线程都将序列化一个不同的对象,但DataContractSerializer
对象本身将被共享。(我不会使用IDataContractSurrogate
or DataContractResolver
,这显然与更复杂/正式的 XML/XSD 模式有关。)
我会好吗?
在 System.Runtime.Serialization.DataContractSerializer 的“线程安全”下的 MSDN 中,它说:
此类的实例是线程安全的,除非该实例与 IDataContractSurrogate 或 DataContractResolver 的实现一起使用。
我觉得这有点含糊(这是 MSDN 线程安全指南的典型特征),但它似乎表明我的用例是合适的。如果您可以指出个人经验、单元测试或演示它的框架反汇编,则奖励:)
PS 我不认为这是 WCF 的 DataContractSerilaizer 线程安全的副本吗?因为那个人的问题原来与DataContractSerializer
它本身的线程安全无关。