2011-08-09 13 views
5

Zajmuję się tworzeniem aplikacji formularza okna. W jednej z moich postaci umieszczam kontrolkę skrzynki obrazkowej. Działa dobrze przez większość czasu. Ale czasami wyświetla czerwony krzyżyk zamiast wyświetlać rzeczywisty obraz.Picture Box out of Memory

W dalszej części zapoznałem się z tym i dowiedziałem się, że ten wyjątek obsługuje wewnętrznie. Więc idę do Debug->Exceptions i sprawdź odpowiednie pola thrown. Następnie stwierdziłem, że czerwone pole jest wyświetlane z powodu następującego błędu:

A first chance exception of type 'System.OutOfMemoryException' occurred in System.Drawing.dll 

Additional information: Out of memory. 

Czy jakiekolwiek ciało może sugerować mi, jak sobie z tym poradzić?

+3

zobaczyć: http://stackoverflow.com/questions/2449587/out-of-memory-with-multi-images-in-one-picturebox – Waqas

+2

Czy ponownie ustawiasz obraz do wielu zdjęć? Jeśli tak, to czy usuwasz poprzednie zdjęcie przed załadowaniem następnego? –

+0

Sprawdź, czy nie utknąłeś gdzieś w nieskończonej pętli. Sprawdź, czy rozmiar zdjęcia nie jest podobny do 1 gb lub coś podobnego. Sprawdź, czy Twój komputer jest nie tylko stary i czy nie ma w nim pamięci. –

Odpowiedz

8

Jako para wam komentarz, że używasz wielu obrazów w PictureBox, należy „jak @Jason zasugerował” dysponowania stary obraz przed nałożeniem nowego, jak:

private void ChangePictureBoxImage(Image image) 
{ 
    pictureBox.Image.Dispose();//dispose the old image. 

    pictureBox.Image = image; 
} 
0

Ile RAM ma twoja maszyna docelowa?

Masz ten wyjątek, ponieważ nie powiodło się wezwanie do przydzielenia większej ilości pamięci dla obrazu. Jeśli nie możesz zwiększyć ilości pamięci na komputerze, spróbuj zmniejszyć rozmiar obrazu lub zamknij wszystkie uruchomione programy.

+1

Czy ktoś naprawdę myśli, że istnieje nawet odległa możliwość, że jest z pamięci RAM/pamięci wirtualnej? –

+1

To właśnie ten wyjątek oznacza ... jak widać w zaakceptowanej odpowiedzi powyżej, w rzeczywistości zabrakło mu pamięci. – lettucemode

Powiązane problemy