Jor*_*ger 5 .net thread-safety datacontractserializer
我想缓存单个实例以DataContractSerializer供多个线程同时使用,以避免为同一根类型多次实例化序列化器带来的损失。每个线程将序列化一个不同的对象,但该DataContractSerializer对象本身将被共享。(我不会使用IDataContractSurrogateor DataContractResolver,这显然与更复杂/正式的 XML/XSD 模式相关。)
我会好吗?
在 MSDN 的 System.Runtime.Serialization.DataContractSerializer 的“线程安全”下,它说:
此类的实例是线程安全的,除非该实例与 IDataContractSurrogate 或 DataContractResolver 的实现一起使用。
我发现这有点模糊(这是典型的 MSDN 线程安全指南),但它似乎表明我的用例是合适的。如果您能指出个人经验、单元测试或演示它的框架反汇编,那就太好了:)
PS 我不认为这与Is WCF's DataContractSerilaizer thread safe?重复。因为那个人的问题结果与本身的线程安全无关DataContractSerializer。
小智 2
是的,您的用例是合适的。DataContractResolver和IDataContractSurrogate的实现都是由 DataContractSerializer 的用户完成的。如果您没有实现和配置它们,则不会出现线程问题(否则 MSDN 文档将是完全错误的)。
我什至会更进一步假设 MSDN 仅排除了 DataContractResolver 和 IDataContractSurrogate 的使用,因为它们可能以错误的方式完成(即不是线程安全的)。但不幸的是,文档中没有证据证明这一点。
| 归档时间: |
|
| 查看次数: |
944 次 |
| 最近记录: |