我在XmlDocument
class documentation MSDN上看到「的XmlDocument的任何公共static成員都是線程安全的任何實例成員不能保證是線程安全的。」是的,但是
任何公共靜態(在Visual共享基本)成員是線程安全的。任何實例成員不保證是線程安全的。
對於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
在一個庫中定義的IT公司正在提供給我,哪裏ID
是int
(大致在我環路)。
這已經在非平行上下文徹底的測試,通過GetXML
產生的string
s爲確實是正確的,通過提供XmlNodeList
預期的結果對應的XmlDocument
爲好,而「解析」它。現在
,它這種並行背景和假設X
和GetXML
確實是線程安全的,確實的事實,我new
在每一個循環的XmlDocument
保證線程安全與否?我的意思是,我怎麼能知道string
成員(首先是有這樣一個字符串?因爲我在文檔中沒有看到任何string
屬性)XmlDocument
接收LoadXml
是static
還是不是?
我想我真的不明白MSDN文檔我上面引述的位......
我確認'doc'(和'nodeList'以及其他'非線程安全'變量)僅在單個線程的上下文中使用。關於文件:我只看到「成員」提到,而不是「方法」。我對'C#'相當陌生,所以錯過了一些詞彙點或? –
「成員」包括方法(代碼)和屬性(數據)。 – Polyfun
在這個問題的背景下,成員和方法是等價的。爲改變你的術語而抱歉。 – mjwills