Я вижу в документации класса XmlDocument
в MSDN, что
Любые общедоступные статические (Shared в Visual Basic) члены этого типа являются потокобезопасными. Любые члены экземпляра не гарантируют потокобезопасность.
То же самое для класса XmlNodeList
.
Я использую эти классы в следующем контексте. Внутри Parallel.Foreach
я делаю:
X MyX = new X();
string XMLstring = MyX.GetXML(ID, true);
XmlDocument doc = new XmlDocument();
doc.LoadXml(XMLstring);
XmlNodeList nodeList = doc.SelectNodes("blah/secondblah");
где X
определено в библиотеке, которую мне предоставляют ИТ-специалисты, а ID
- это int
(примерно на котором я зацикливаюсь).
Это было тщательно протестировано в непараллельном контексте, string
, созданные GetXML
, действительно верны, соответствующие XmlDocument
также, и "разбор" их с помощью XmlNodeList
дает ожидаемые результаты.
Теперь, в этом параллельном контексте и при условии, что X
и GetXML
действительно потокобезопасны, обеспечивает ли тот факт, что я new
и XmlDocument
в каждом цикле, потокобезопасность или нет? Я имею в виду, как я могу узнать, что член string
(во-первых, есть ли такая строка? поскольку я не вижу никакого свойства string
в документе) XmlDocument
, получающий LoadXml
, является static
или нет?
Я полагаю, что не совсем понимаю часть документации MSDN, которую я цитирую выше...