我在 MSDN 上的XmlDocument类文档中看到
这种类型的任何公共静态(在 Visual Basic 中为 Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。
上课也是一样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");
whereX是在 IT 提供给我的库中定义的,而 whereID是int(我大致在哪个循环上)。
这已经在非并行上下文中进行了彻底的测试,string产生的 sGetXML确实是正确的,对应XmlDocument的也是正确的,并且通过“解析”它XmlNodeList提供了预期的结果。
现在,这个并行上下文并假设X并且GetXML确实是线程安全的,我在每个循环中的事实是否new确保XmlDocument线程安全?我的意思是,我怎么知道接收is的string成员(首先是否有这样的字符串?因为我string在文档中没有看到任何属性)?XmlDocumentLoadXmlstatic
我想我不太了解上面引用的 MSDN 文档...