Fragensteller
Thread Stoppen

Allgemeine Diskussion
-
Hallo,
Mein Problem: Ich möchte in einer RichTextbox den OuterText von einem Xml-Element laden. Wenn jedoch zu viel OuterText exsistiert, soll, damit der Computer nicht überlastet ist, die ganze Aktion abgebrochen werden oder garnicht erst angefangen werden.
Meine Versuche: Zuerst habe ich mir überlegt, ob ich nicht vielleicht einfach die Buchstaben zählen könnte:
If derKnoten.OuterText.Count <= 200 Then RtfBox.Text = derKnoten.OuterXml Else MsgBox("Zu viel Text") End If
Problem: Ich glaube er zählt jetzt alle Zeichen durch, und bricht nicht bei 400 Zeichen ab. Da ich aber ein OuterText von 89.762 Zeilen habe, hängt der Computer sich trotzdem durch das Zählen der Zeichen auf.
Nächster Versuch:
Ich habe einfach geguckt, wieviele Unterknoten mein Element hat:
If derKnoten.ChildNodes.Count <= 20 Then RtfBox.Text = derKnoten.OuterXml Else MsgBox("Zu viele Knoten") End If
Problem: Eigentlich wäre mein Gedanke alle Unterknoten (Also auch die Unterknoten von den Unterknoten und von diesen Unterknoten nocheinmal die Unterknoten und ... zu zählen). Weil ja sich hinter einen von diesen 20 Unterknoten auch einer Befinden kann, der wieder 2000 Unterknoten hat, was wiederum zu einem Stillstand führen kann. Doch: Ich weiß nicht, wie man absolut alle Unterknoten zählt?!.
Gruß Krock
I'm using Vb.Net
- Typ geändert Robert BreitenhoferModerator Montag, 28. März 2011 17:14 Keine Rückmeldung des Fragenstellender
Alle Antworten
-
Hi,
Mein Problem: Ich möchte in einer RichTextbox den OuterText von einem Xml-Element laden. Wenn jedoch zu viel OuterText exsistiert, soll, damit der Computer nicht überlastet ist, die ganze Aktion abgebrochen werden oder garnicht erst angefangen werden.
da ich jetzt nicht genau weiß, wo Du dein OuterText hernimmst, hier mal ein Auszug aus der doku zu XmlNode.InnerText.
| Ruft die verketteten Werte des Knotens und sämtlicher diesem untergeordneten Knoten ab
Das bedeutet, dass zuerst einmal sämtliche untergeordneten Nodes, deren Kindelemente, ... abgerufen werden und daraus dann ein String gebildet wird.
Wenn dann also der Node 10 ChildNodes hat, die wiederum jeder wieder 10 und die wiederum dann 1000, wird das naturgemäß "ein wenig" dauern.
Die Frage wäre daher eher, ob Du mit der Strategie überhaupt ans Ziel kommst.
Problem: Ich glaube er zählt jetzt alle Zeichen durch, und bricht nicht bei 400 Zeichen ab. Da ich aber ein OuterText von 89.762 Zeilen habe, hängt der Computer sich trotzdem durch das Zählen der Zeichen auf.
Die Zeichen selbst werden nicht durchgezählt. Aber es werden alle untergeordneten Elemente rekursiv durchlaufen. Warum dein Computer sich da aber aufhängen sollte, versteh ich nicht. Klar, es wird dauern und die Anwendung lastet dann, wenn man nicht bspw. durch Auslagerung in einen eigenen Thread mit niedriger(er) Priorität vorgesorgt hat, das System erstmal aus. Aber aufhängen?
Doch: Ich weiß nicht, wie man absolut alle Unterknoten zählt?!.
Schau mal bitte hier, da findest einige Lösungsansätze:
http://stackoverflow.com/questions/2645319/count-total-number-of-xmlnodes-in-c
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Theading.thread.sleep(zeit) dazu um die Leistung zu begrenzen.
Wo sollte Thread.Sleep "Leistung begrenzen", wenn, nach Schilderung des OP, ein einzelner Methodenaufruf hier bereits einen Flaschenhals darstellt?
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de