Ist es sicher, untergeordnete Elemente über die ADD-Methode parallel zu einem XElement hinzuzufügen (wie in einer parallelen foreach)?Ist die XElement-Add-Operation Thread Safe?
Danke!
Ist es sicher, untergeordnete Elemente über die ADD-Methode parallel zu einem XElement hinzuzufügen (wie in einer parallelen foreach)?Ist die XElement-Add-Operation Thread Safe?
Danke!
Vom documentation:
Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind thread sicher. Alle Instanzmitglieder sind nicht garantiert Thread-sicher.
Mit anderen Worten, nein, die add
Methode ist nicht threadsicher.
Aktuelle (schmerzhafte) Erfahrung führt mich zu der Annahme, dass es sehr, sehr Thread un-sicher ist.
Ich analysierte ein paar Dump-Dateien, die 7,4 Millionen und 8,8 Millionen zusätzliche unerwünschte XElement-Instanzen enthalten. Wie ich am besten feststellen kann, wurden sie erstellt, als ein harmlos aussehender Code, der das Manipulieren der Unterknoten eines XElement (einschließlich des Aufrufs von Add() in einigen Fällen) aus zwei Thread-Pool-Threads zur gleichen Zeit aufgerufen wurde. Dieses
ist nicht allzu überraschend - XElement und die zugehörigen Klassen implementiert verketteten Liste artige Strukturen, und wenn Sie den Link verweist auf eine Vielzahl von seltsamen Ergebnissen Gerangel kann erfolgen - Schleifen, ungebunden Fragmente usw.
+1 - Lesen der Dokumentation ist in der Regel ein guter Anfang. –