Потокобезопасность и Система. Текст. Кодирование в C#

Действительно ли безопасно использовать то же Encoding объект от различных потоков?

Путем "использования" я имею в виду, звоня Encoding.GetString(), Encoding.GetBytes() и запишите некоторый XML с XmlWriter (созданный чем-то как XmlWriter.Create(myStream, new XmlWriterSettings() { Encoding = myEncoding }).

Сайт MSDN указывает, что "Любые члены экземпляра, как гарантируют, не будут ориентированы на многопотоковое исполнение".

Так, как я могу безопасно записать два XML-документа одновременно? (спасибо!!)

19
задан thaller 11 June 2010 в 16:12
поделиться

1 ответ

Да, использование одного и того же объекта Encoding должно быть безопасным, поскольку он спроектирован без сохранения состояния - тогда как Encoder и Decoder сохраняют состояние, поддерживая неполные символы и т. д. при необходимости. Я полагаю, вы могли бы написать класс Encoding с отслеживанием состояния, но это было бы очень плохой идеей. Насколько мне известно, все встроенные реализации кодирования не сохраняют состояния и потокобезопасны.

Например, свойства Encoding.UTF8 , Encoding.ASCII и т. Д. Являются одиночными.

25
ответ дан 30 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: