Witam
Przy takim kodzie(ponizej) wywala mi komunikat "OUTOFMEMORY".
A dokladniej, za pierwszym przejsciem przez funkcje change_to_xml(), program wciaga prawie 800MB pamieci, ale jej potem nie zwalnia, tylko dopisuje. Kiedy, x==2 i znowu wywolywana jest ta funkcja, wtedy wywala mi ten komunikat. Tekst, ktory jest wczytywany z pliku zajmuje max. 6MB.
Kiedy zrobilem to poprzez plik.Replace, to ladnie mi czyscilo pamiec, ale za to nie wszystkie znaki mi usuwal:(
W jaki sposob zwalniac pamiec, ktora Regex zapelnia ?
private void test()
{
for(int x=1;x<10;x++)
{
plik="";
plik = File.ReadAllText(@"c:\jakis tam plik.xml");
change_to_xml();
File.WriteAllText(@"c:\"+x.ToString()+".xml", plik.ToString(), Encoding.UTF8);
}
MessageBox.Show("koniec");
}
private void change_to_xml()
{
plik = Regex.Replace(plik, Convert.ToString('"'), Convert.ToString("'"));
plik = Regex.Replace(plik, "<Table>", "");
plik = Regex.Replace(plik, "</Table>", "");
plik = Regex.Replace(plik, "<ms>", "");
plik = Regex.Replace(plik, "</ms>", "");
plik = Regex.Replace(plik, "<", "<");
plik = Regex.Replace(plik, ">", ">");
plik = Regex.Replace(plik, "<ms xml:space='preserve'>", "");
plik = Regex.Replace(plik, @"\<id_ms\>(.*)\</id_ms\>", "");
plik = Regex.Replace(plik, "<?xml version='1.0' standalone='yes'?>", "");
plik = Regex.Replace(plik, "<NewDataSet>", "");
plik = Regex.Replace(plik, "</NewDataSet>", "");
plik = Regex.Replace(plik, " ", "");
plik = Regex.Replace(plik, "\r\n", "");
plik = Regex.Replace(plik, Convert.ToString("'"), Convert.ToString('"'));
}