Une exception non gérée du type 'System.OutOfMemoryException " s'est produite dans System.Drawing.dll informations Supplémentaires: de mémoire
J'ai une liste des "images" qui contient environ de 20 photos environ 1 mo chacune. Je veux faire défiler les images dans la liste en cliquant sur le bouton suivant. Mais après environ 8 photos que je reçois de mémoire.
private void button4_Click(object sender, EventArgs e) //next
{
index++;
if (index >= images.Count) index = 0;
CurrImage = images[index];
Bitmap b = new Bitmap((Bitmap)CurrImage.Clone()); //breakpoint occurs her
pictureBox1.Image = b;
NewThread = new Thread(new ThreadStart(ChooseColors2));
}
ChooseColors2 thread va utiliser "CurrImage" afin d'éviter des conditions de course, j'ai évité que par la création d'une nouvelle image, comme indiqué ci-dessus
Veuillez noter que, si j'utilise pictureBox1.Image = CurrImage; sans en créer de nouveaux bits de la carte je n'ai pas cette erreur, mais il sera en condition de course d'exception avec le fil.
OriginalL'auteur Basco | 2013-03-19
Vous devez vous connecter pour publier un commentaire.
Vous pourriez essayer d'appeler ce qui suit avant d'assigner une nouvelle image à
pictureBox1.Image
, supprimer le précédent de la "nouvelle" Image et de libérer des ressources:OriginalL'auteur Grant
Je crois que vous pouvez également essayer de faire usage de
using
de mots-clés; comme il sera assurez-vous que l'objet est disposé directement après son champ d'application. vous pouvez le faire de cette façon:Pour plus de détails, veuillez vous référer à Quelles sont les utilisations de “l'aide” en C#.
OriginalL'auteur M Mabrouk