new Bitmap(width, height) error

Tags:    c#

<< < 12 > >>
Hej, jeg har et problem med den følgende kode:
Fold kodeboks ind/udCSharp kode 

Efter at "Bitmap target = new Bitmap(width, height, PixelFormat.Format32bppPArgb);" er blevet brugt ca. 500 - 551 gange, får jeg en meget mærkelig fejl.

Fold kodeboks ind/udKode 


altså: "Parameteren er ugyldig", mine spørgsmål er så, hvordan kan den være det, og hvordan fixer jeg det.



17 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Har du prøvet at bruge constructoren uden at angive PixelFormat? Og er de tal nogle du har udregnet, eller fået den til at udskrive?

TILFØJELSE:
Har lige lavet en lille test - og kan se at hvis du ikke rydder resourcerne ordentligt op efter dit billede, så ender den med at give din fejl (må indrømme fejlmeddelelsen virker lidt misvisende). Så prøv at kalde Dispose() på dit Bitmap ligeså snart du er færdig med at bruge den.



Indlæg senest redigeret d. 24.09.2011 13:06 af Bruger #2416
Nu ved jeg ikke hvor hurtigt du tager nye billeder, men hvis du gør det så langsomt den godt kan nå at gemme et billede inden for tiden i gennemsnit, så er løsningen med en ny tråd i princippet fin. Du skal bare vente med at kalde Dispose() til efter du har kaldt Save() i tråden.

Det har desuden et relativt stort overhead at lave en ny tråd, hver gang du vil gemme et billede. I stedet for kan du i .NET 4.0 bruge Tasks (se http://www.albahari.com/threading/part5.aspx#_Task_Parallelism) til at få udført opgaven parallelt (I tidligere versioner af .NET kan du benytte ThreadPool.QueueUserWorkItem).



Hej Lasse

Prøv at tjekke at både width og height er gyldige (altså værdier større end 0). Lidt svært at se om de er det uden at vide hvad der er gemt i XY :-)





XY er en array med 4 tal
alle constante

500 1364 500 986

det giver width: 864
og giver height: 486



Indlæg senest redigeret d. 24.09.2011 12:48 af Bruger #16191
jeg skal prøve.

oh, forresten, det er alle bitmaps der fejler efter denne error.

EDIT: det virkede =D



Indlæg senest redigeret d. 24.09.2011 13:19 af Bruger #16191
Husk at stemme, som beskrevet øverst i tråden, Lasse :)

Mvh.

Kasper (TSW)



hm, ny fejl.
af en eller anden grund, så fejler den til at gemme billedet, fra min List<Image>, fordi den er Disposed.

andre fix?



Din oprindelig fejl med at oprette flere bitmaps kommer, fordi du bruger for meget memory. Du skrev at den begyndte at fejle omkring billede 500 - bare for at gemme pixelsne for 500 billeder på 864x486, skal du bruge omkring 800MB hukommelse. Så problemet ligger i du bruger for meget hukommelse, hvis du ikke rydder billederne op efter dig (hvilket er det du gør med Dispose()).

Er der nogen grund til at du gemmer alle billederne i et array til at starte med? Hvis du f.eks. kunne gemme billederne med det samme du har lavet dem, så ville du ikke få et problem med hukommelsen.





Det her er sikkert et dumt spørgsmål, men har du selv oversat de genererede fejl til dansk, eller har du rent faktisk Visual Studio / Visual C# på dansk? For jeg kan kun finde den amerikanske version, hvor interfacet og fejlene jo er skrevet på engelsk.



Thomas: Teksten på fejlmeddelelserne afhænger af hvilket sprog din .NET runtime er på, og ikke dit visual studio. Oftest er det dog meget smart med engelske fejlmeddelelser, da det normalt er nemmere at finde svar på hvad de betyder, hvis man googler dem.



<< < 12 > >>
t