c# - Lack of Memory for picturebox -
c# - Lack of Memory for picturebox -
i create mini games work image box switch image. using switch. using max 30 images app.
definitions:
class unikatnihodnoty { public static list<button> buttonlist = new list<button>(); public static list<string> uhodnuteobrazky = new list<string>(); public static bool security = false; public static string pocetpokusu; public static string casnaobrazky; public static string casnatah; public static string bodykvitestvi; }
this script loading image files:
class nactenisouboru { string obrazky; string zadnikarta; string zadnistrana; public string hledanyobrazek; public list<string> obrazkylist = new list<string>(); public list<string> obrazkylistcontrol = new list<string>(); public nactenisouboru() { // cesty k souborům var currentdirectory = directory.getcurrentdirectory(); obrazky = currentdirectory + @"\vse\"; zadnistrana = currentdirectory + @"\zadnistrana\"; // základní hodnota zadnikarta = ""; } public void nacteniobrazku() { var listoffiles = new list<string>(); string[] fileentries = directory.getfiles(obrazky); foreach (string filename in fileentries) listoffiles.add(filename); random random = new random(); (int = 0; obrazkylist.count < 15; i++) { int index = random.next(0, listoffiles.count - 1); if (!obrazkylist.contains(listoffiles[index])) { obrazkylist.add(listoffiles[index]); obrazkylistcontrol.add(listoffiles[index]); } } } public void zobrazeniobrazku() { int = 0; foreach (button btn in unikatnihodnoty.buttonlist) { if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(obrazkylist[i++]); } } public void nactenihledanehoobrazku(picturebox picture) { random random = new random(); foreach (string obrazky in unikatnihodnoty.uhodnuteobrazky) obrazkylistcontrol.remove(obrazky); int index = random.next(0, obrazkylistcontrol.count - 1); hledanyobrazek = obrazkylistcontrol[index]; if (picture.backgroundimage != null) picture.backgroundimage.dispose(); picture.backgroundimage = image.fromfile(obrazkylistcontrol[index]); } public void nactenizadnistrany() { string[] fileentries = directory.getfiles(zadnistrana); foreach (string filename in fileentries) zadnikarta = filename; foreach (button btn in unikatnihodnoty.buttonlist) { if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.text = ""; btn.backgroundimage = image.fromfile(zadnikarta); } } }
can help me how can clean lack of memory after every switch images because phone call fuction every 30s.
this script switch images:
private void obrazek_click(object sender, eventargs e) { button btn = new button(); btn = (button)sender; timetah.enabled = false; switch (btn.name) { case "picture_0_0": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[0]); if (soubor.obrazkylist[0] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[0]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_0_1": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[1]); if (soubor.obrazkylist[1] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[1]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_0_2": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[2]); if (soubor.obrazkylist[2] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[2]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_0_3": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[3]); if (soubor.obrazkylist[3] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[3]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_0_4": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[4]); if (soubor.obrazkylist[4] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[4]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_1_0": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[5]); if (soubor.obrazkylist[5] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[5]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_1_1": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[6]); if (soubor.obrazkylist[6] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[6]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_1_2": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[7]); if (soubor.obrazkylist[7] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[7]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_1_3": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[8]); if (soubor.obrazkylist[8] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[8]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_1_4": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[9]); if (soubor.obrazkylist[9] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[9]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_2_0": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[10]); if (soubor.obrazkylist[10] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[10]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_2_1": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[11]); if (soubor.obrazkylist[11] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[11]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_2_2": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[12]); if (soubor.obrazkylist[12] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[12]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_2_3": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[13]); if (soubor.obrazkylist[13] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[13]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; case "picture_2_4": if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(soubor.obrazkylist[14]); if (soubor.obrazkylist[14] == soubor.hledanyobrazek) { unikatnihodnoty.uhodnuteobrazky.add(soubor.obrazkylist[14]); uspechnaobrazku(sender, e); } else neuspechnaobrazku(sender, e); break; } soubor.nactenizadnistrany(); }
problem:
game still crashed after loading image or if added new images file. , if games crashed written crash "lack of memory" nil more , not where. please help.
error:
************** exception text **************
system.outofmemoryexception: out of memory in system.drawing.image.fromfile (string filename, boolean useembeddedcolormanagement) in system.drawing.image.fromfile (string filename) in gamecards.soubory.nactenisouboru.zobrazeniobrazku () d: \ programme \ gamecards \ gamecards \ files \ nactenisouboru.cs: line 60 in gamecards.gamecard.spustit_click (object sender, eventargs e) in d: \ programme \ gamecards \ gamecards \ gamecards.cs: line 49 in system.windows.forms.control.onclick (eventargs e) in system.windows.forms.button.onclick (eventargs e) in system.windows.forms.button.onmouseup (mouseeventargs mevent) in system.windows.forms.control.wmmouseup (message & m, mousebuttons button, int32 clicks) @ system.windows.forms.control.wndproc (message & m) in system.windows.forms.buttonbase.wndproc (message & m) in system.windows.forms.button.wndproc (message & m) @ system.windows.forms.control.controlnativewindow.onmessage (message & m) @ system.windows.forms.control.controlnativewindow.wndproc (message & m) in system.windows.forms.nativewindow.callback (intptr hwnd, int32 msg, intptr wparam, intptr lparam) public void zobrazeniobrazku() // when utilize code sent me upper errors. { int = 0; foreach (button btn in unikatnihodnoty.buttonlist) { if (btn.backgroundimage != null) btn.backgroundimage.dispose(); btn.backgroundimage = image.fromfile(obrazkylist[i++]); } }
c# image memory-leaks switch-statement picturebox
Comments
Post a Comment