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

Popular posts from this blog

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -

node.js - Bad Request - node js ajax post -