ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
350
350
EMPFEHLEN
-
Hi
Ich nutze die XmlDocument-Klasse und habe eine Projekt-Datei mit einer Größe von derzeit 14kb.
Angezeigt werden die Daten in einem TreeView.
Das Lesen ist kein Problem und geht auch in einer akzeptablen Geschwindigkeit.
Beim Schreiben der Knoten (Attribute, InnerText) oder beim Anlegen neuer Knoten und deren Attributen steigt die CPU-Last auf 100% und der Rechner benötigt einige Minuten für den Vorgang.
Das Kuriose ist, wenn ich das Projekt speichere und das Programm neu starte, geht das Erstellen wieder schnell, verlangsamt sich dann aber zusehends mit jedem weiteren neuen Knoten.
Woran kann das liegen?
Ist die Datei schon jetzt zu gross um sie im Speicher zu lassen und zu bearbeiten?
mfg
-
Hallo vanilla!
Also dein Problem ist das beim schreiben des XML's alles langsamer wird?
Wenn ja, mit was und wie erstellst Du denn das XML?
Der XmlTextWriter zB schreibt ungecached in das XML. Sollte also nicht daran liegen.
Mehr Details würden echt mehr aussagen.
Btw. wenn Du den TreeView füllst, solltest Du dir mal den Hinweis
in diesem Repaint unterdrücken - Thread anschaun.
MfG, cosmoMfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
Hi
Danke für Deine schnelle Antwort.
Ich bin nicht gerade der Type der gut erklären kann, also fragt bitte falls Unklarheiten bestehen...
Problem
Also mein Problem sind wirklich nur die Schreibzugriffe auf die XML-Struktur.
Lesen ist kein Problem ( der TreeView war hier nur als leichte "Projekterklärung" angeführt).
Einen neuen Knoten erstelle ich z.B. mit folgender Funktion:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
void myDATA_ST_Project::m_ActiveDisplay_linkedAction_Condition_New(XmlNode* __xnCondition) XmlElement* __xeTemp; XmlAttribute* __xaTemp; XmlElement* __xeCondition = this->v_xmlProject->CreateElement("ad_act_linked_action_condition"); __xaTemp = this->v_xmlProject->CreateAttribute("conditionID"); __xaTemp->Value = "none"; __xeCondition->Attributes->Append(__xaTemp); __xaTemp = this->v_xmlProject->CreateAttribute("destinationID"); __xaTemp->Value = "none"; __xeCondition->Attributes->Append(__xaTemp); __xnCondition->AppendChild(__xeCondition); }
Anm.: xmlProject ist ein Object einer abgeleiteten XmlDocument-Klasse
Bei jedem der Bibliotheksaufrufe (->CreateElement, ->CreateAttribute, ->Append) geht die CPU-Last auf 100% und es dauert minutenlang.
Als Methode des XML-Zugriffs habe ich DOM gewählt.
Der Vorteil ist, das XML-File im Speicher liegt.
Ich kann also die Knoten anspringen so wie ich sie brauche, ohne jedesmal meine Datei neu lesen zu müssen.
mfg
Vanilla
-
Ok, aber ich bin leider kein cpp Crack. Versuche aber zu helfen.
Kann es sein das dies ein Thread - übergeifender Zugriff ist?
Zitat von vanilla
Also das Du ein ein Objekt ansprichst, was von einem anderen Thread erstellt wurde?
Ich weiss jetzt aber nicht ob sich genau so wie im .NET 1.1 (C#) verhält,
da man dort dabei evtl. genau solche wartezeiten hat oder Du gleich eine Exception,
wie jetzt auch im .NET 2.0 bekommst.
Oder hast Du evtl. die Methoden CreateElement, CreateAttribute, Append überschrieben?
Wenn ja, was passiert da?
Ansonsten fällt mir nichts ein.MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
Also die Methoden sind nicht überschrieben auch nutze ich kein Multi-Threading, also...
Ich dachte das so ein Problem evtl. bekannt ist und schonmal jemand darüber gestolpert ist.
Aber Danke für Deine Hilfe!
Ähnliche Themen
-
[C#] XmlDocument.GetElementById() wirft immer 0 zurück
Von Henig im Forum .NET Windows FormsAntworten: 8Letzter Beitrag: 05.08.10, 15:20 -
WPF TreeView an XMLDocument binden
Von accelle im Forum .NET WPF & SilverlightAntworten: 1Letzter Beitrag: 08.08.08, 12:11 -
XMLDocument darstellen
Von dila71 im Forum .NET Windows FormsAntworten: 1Letzter Beitrag: 07.12.05, 10:57 -
XMLDocument lesefehler
Von Christian Kusmanow im Forum .NET ArchivAntworten: 12Letzter Beitrag: 21.01.05, 16:33 -
XMLDocument
Von MD1978 im Forum .NET ArchivAntworten: 2Letzter Beitrag: 29.12.04, 17:24





Zitieren
Login





