ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
466
466
EMPFEHLEN
-
Hallo,
ich hab da ein größeres Problem. Ich lese mit folgendem Code eine Textfile aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
public static void LoadListBoxTemp(ListBox lb) { lb.Items.Clear(); string searchstr, hittemp; string[] hit; string[] lbarray = IniClass.FileToArray(IniClass.textfile); System.IO.StreamReader sr = new StreamReader(IniClass.textfile); searchstr = sr.ReadToEnd(); sr.Close(); hit = searchstr.Split('\n'); for (int i = 0; i < hit.Length; i++) { hittemp = hit[i]; if (hittemp != "") { lb.Items.Add(hittemp); } } searchstr = null; hittemp = null; }
Bei kleineren Dateien funktioniert das wunderbar, nur bei etwas größeren Textdateien
läuft mir der Speicher voll über 600MB******
Kann mir einer sagen, was das Problem hier ist?
Danke Euch schon mal...
-
Wie wärs mit http://msdn.microsoft.com/en-us/libr....readline.aspx ?
Was du da machst ist ziemlich unnötig, weil du lädst den gesamten Inhalt in den Speicher und wendest dann noch "split" an (was ja den Speicher nochmal verdoppelt). Dabei hast du doch so einen tollen Stream, welchen du gemütlich Teil für Teil durch den Speicher schieben kannst.Geändert von CPoly (05.01.11 um 20:56 Uhr)
-
Das lässt sich so schwer sagen, da ich nicht weiß, wo das genau auftritt.
Aber ein paar Hinweise:
Da du deine String sowieso in "Zeilen" splittest kannst du auch gleich StreamReader.ReadAllLines() nutzen und dir so die ganze String-Kopiererei sparen (könnte das Problem schon minimieren)
Desweiteren solltest du den StreamReader in einem using-Statement nutzen, da die Klasse (bzw. die Basisklasse) IDisposable implementiert
Dann hast du mehrere Variablen, die unützt sind. Und zwar searchstr (jedenfalls ab Verwendung von ReadAllLines), hittemp, lbarrayGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Hallo Jungs,
erst mal besten Dank für Eure schnelle Hilfe!! das ist immer das beste in diesem Forum!! Danke!
Ich hab mir da eine Grube gebaut, in der ich selbst getappt bin. Ausser den o.g. code nutze ich
noch einen anderen, welcher bestimmte Einträge ersetzt. Und der war der Auslöser, durch einen
Fehler in einer Schleife, wurde die Textfile immer größer und größer ,....... bis diese schließlich fast 100MB groß war und im Hintergrund der Reader nicht mehr mitgekommen ist, einzulesen mit o.g. Code
@CPoly
mit ReadLine bekomme ich das nicht hin, weil ich den ges. Inhalt der File Splitten muss, damit ich
die Zeilen dann gleich in ein Array schreiben kann (hit[]). Deshalb, readtoend();
@Nico
das using benutze ich doch bereits mit using System.IO;
oder?
Danke Euch !!
-
Nein, nutzt du nicht!
using-Direktive != using-Statement
und letzteres solltest du immer verwenden, wenn du eine Klasse nutzt, die IDisposible implementiert!Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
@Nico
Danke für den Link. Aber ich werde immer noch nicht schlau daraus....
Wie müsste dann der o.g. Code aussehen?
einfach als Beispiel, vielleicht versteh ich es dann.
Leider bin ich noch immer Anfänger was C anbelangt.
Dank Dir
-
06.01.11 10:44 #7irgendwerheute Tutorials.de Gastzugang
z.B so!
Mehr Info`s findest Du hier: "http://msdn.microsoft.com/de-de/libr...=VS.80%29.aspx".
Code :1 2 3 4 5 6 7 8 9
using (StreamReader sr = File.OpenText(textfile)) { String input; while ((input = sr.ReadLine()) != null) { lb.Items.Add(input); } sr.Close(); }
Ähnliche Themen
-
Virtueller Speicher voll!
Von Kopfballstar im Forum Javascript & AjaxAntworten: 13Letzter Beitrag: 03.06.08, 14:22 -
Speicher voll O.o
Von Stelo im Forum PHPAntworten: 6Letzter Beitrag: 15.05.07, 17:24 -
Speicher voll und keine Ahnung warum
Von the incredible Leitman im Forum Microsoft WindowsAntworten: 6Letzter Beitrag: 31.03.07, 18:05 -
Apache spamt Speicher voll
Von mgraf im Forum Hosting & WebserverAntworten: 1Letzter Beitrag: 07.01.07, 19:29 -
Speicher läuft voll
Von Primax im Forum Visual Basic 6.0Antworten: 5Letzter Beitrag: 01.12.03, 16:51





Zitieren



Login





