は私が「XmlDocumentオブジェクトのすべてのパブリックstaticメンバーは、インスタンスメンバーの場合は、スレッドセーフであるとは限りませんスレッドセーフです。」:はい、しかし
すべてのパブリックstaticは(ビジュアルで共有されていることがMSDNに
XmlDocument
class documentationで見ますBasic)のメンバーはスレッドセーフです。どのインスタンスメンバーもスレッドセーフであるとは限りません。
XmlNodeList
クラスの場合と同じことです。
私はこれらのクラスを以下の文脈で使用しています。 Parallel.Foreach
内部で私が行います
X
はITのは、私に提供して
ID
は(おおよそIループ、その上に)
int
でいるライブラリで定義されて
X MyX = new X();
string XMLstring = MyX.GetXML(ID, true);
XmlDocument doc = new XmlDocument();
doc.LoadXml(XMLstring);
XmlNodeList nodeList = doc.SelectNodes("blah/secondblah");
。これは、非平行文脈で十分にテストされてい
、GetXML
によって生成string
Sは同様に、実際に対応XmlDocument
正しい、と期待される結果を提供XmlNodeList
を介してそれを「解析します」。
今は、この並列コンテキストとX
とGetXML
が実際にスレッドセーフであると仮定し、私はnew
すべてのループでXmlDocument
はスレッド安全性を確保するかということは、ありませんか?つまり、string
メンバー(まず最初に、そのような文字列がありますか?プロパティがドキュメントに表示されないため)XmlDocument
がLoadXml
であることがstatic
であるかどうかを知るにはどうすればよいですか?
私はドキュメントがXmlDocument.MethodCall
ようになり静的である任意の方法は、(スレッドセーフであることを。それISN意味
'doc'(と' nodeList'と他の 'スレッドセーフではない'変数)が単独のスレッドのコンテキスト内でのみ使用されることを確認します。この文書について:私は、「メソッド」ではなく、「メンバ」という言葉しか見ません。私は 'C#'にかなり新しいので、いくつかの語彙のポイントを逃したのですか? –
"メンバー"には、メソッド(コード)とプロパティ(データ)が含まれます。 – Polyfun
この質問の文脈では、メンバーとメソッドは同等です。あなたの用語を変更するためのお詫び。 – mjwills