c# - Out of memory reading after reading 682 txt files -
i want read file code after 682 times error:
exception of type 'system.outofmemoryexception' thrown.
system.io.streamreader file = new system.io.streamreader(scanpad[lusteller]);
scanpad array filepaths , lusteller counter it. scanpad excists 11207 files.
i have have looked en there file on place 682
anyone solution?
here full version of code
using (streamreader file = new system.io.streamreader(scanpad[lusteller])) { //do stuff lengte = bestandsnaam.length; lengte = lengte - 13; controller = bestandsnaam.remove(lengte, 13); // controllertype uit naam halen { rij = file.readline(); if (rij != null) //error op volgende lijn vermijden { if (rij.startswith("0") || rij.startswith("1") || rij.startswith("2") || rij.startswith("3")) { rijcheck = true; } teller = teller + 1; if (teller > 10) { if (rijcheck == true) // rij datumlijn { string[] split = rij.split(' '); foutinformatie[0, index] = type; //type ophalen foutinformatie[3, index] = controller; //controllernaam ophalen foutinformatie[1, index] = split[0]; //datum ophalen foutinformatie[2, index] = split[1]; //tijd ophalen foutinformatie[4, index] = split[2]; //foutcode ophalen foutinformatie[5, index] = split[5]; //foutteller ophalen if (controller.startswith("mpu") == true) { lusarraygraad = 5; while (lusarraygraad < 360) { if (graadmpu[0, lusarraygraad] == split[2]) { try { graad = graadmpu[1, lusarraygraad]; foutinformatie[7, index] = graad; } catch { } lusarraygraad = lusarraygraad + 499; graadgevonden = true; } lusarraygraad = lusarraygraad + 1; } foutinformatie[7, index] = graad; if (graadgevonden == false) { foutinformatie[7, index] = ""; } graadgevonden = false; } ////////////////////////////////////////////////////////////////////////// if (controller.startswith("aaux") == true) { lusarraygraad = 4; while (lusarraygraad < 30) { if (graadaaux[0, lusarraygraad] == split[2]) { try { graad = graadaaux[1, lusarraygraad].tostring(); foutinformatie[7, index] = graad; } catch { } lusarraygraad = lusarraygraad + 499; graadgevonden = true; } lusarraygraad = lusarraygraad + 1; } foutinformatie[7, index] = graad; if (graadgevonden == false) { foutinformatie[7, index] = ""; } graadgevonden = false; } if (controller.startswith("actrl") == true) { lusarraygraad = 6; while (lusarraygraad < 85) { if (graadactrl[0, lusarraygraad] == split[2]) { try { graad = graadactrl[1, lusarraygraad].tostring(); foutinformatie[7, index] = graad; } catch { } lusarraygraad = lusarraygraad + 499; graadgevonden = true; } lusarraygraad = lusarraygraad + 1; } foutinformatie[7, index] = graad; if (graadgevonden == false) { foutinformatie[7, index] = ""; } graadgevonden = false; } try { telleromschrijving = 6; informatie = ""; while (split[telleromschrijving] != " ") { informatie = informatie + " " + split[telleromschrijving]; telleromschrijving = telleromschrijving + 1; } } catch { foutinformatie[6, index] = informatie; //foutteller ophalen } rijcheck = false; rij = file.readline(); while (varcheck < 40) { // rij met eerste variable if (rij != "") { variable[indexlokaal, varteller] = rij; foutinformatie[varteller + 8, index] = variable[indexlokaal, varteller] = rij; varteller = varteller + 1; rij = file.readline(); } else { foutinformatie[varteller + 8, index] = " "; varteller = varteller + 1; } varcheck = varcheck + 1; } varcheck = 0; varteller = 0; indexlokaal = indexlokaal + 1; index = index + 1; } } } } while (rij != null); file.close(); file.dispose(); }
i imagine 682 number happen running out of memory, not special number. should encapsulate streamreader into
using(streamreader file = new system.io.streamreader(scanpad[lusteller])) { //do stuff }
this way, streamreader disposed of after being used, clearing memory
edit update
inside streamreader have
rij = file.readline(); while (varcheck < 40) { // rij met eerste variable if (rij != "") { variable[indexlokaal, varteller] = rij; foutinformatie[varteller + 8, index] = variable[indexlokaal, varteller] = rij; varteller = varteller + 1; rij = file.readline(); }
but not checking if readline
returning null again, looking @ http://msdn.microsoft.com/en-gb/library/system.io.streamreader.readline.aspx
this can cause outofmemory exception stream has reached null , yet have continued onwards
Comments
Post a Comment