Lors du dessin d'une image: System.Runtime.InteropServices.ExternalException: une erreur générique s'est produite dans GDI

J'ai un mondial objet Graphique créé à partir d'un Panneau. À intervalles réguliers, une image est repris à partir du disque et dessiné dans le panneau à l'aide de Graphiques.DrawImage(). Il fonctionne très bien pour quelques itérations et puis je suis arriver la suite utile exception:

System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
at System.Drawing.Graphics.CheckErrorStatus(Int32 status)
at System.Drawing.Graphics.DrawImage(Image image, Int32 x, Int32 y)
at System.Drawing.Graphics.DrawImage(Image image, Point point)

J'ai exclu les fuites de mémoire que je me débarrasser de l'image de l'objet quand je suis fait avec elle. Je sais que les images ne sont pas endommagés et peuvent être lus beaux que le programme s'exécute parfaitement pendant un certain temps avant que la commission ne cesse de montrer.

J'ai rencontré le même problème lors de l'utilisation d'un contrôle PictureBox, mais cette fois au moins, j'ai une erreur au lieu de rien.

J'ai vérifié les objets GDI et des objets UTILISATEUR dans le Gestionnaire de Tâches, mais ils sont toujours autour de 65 objets utilisateur et 165 objets GDI lorsque l'application fonctionne et quand il n'est pas.

J'ai besoin d'aller au fond de ce dès que et il n'est pas comme je peux coller des points d'arrêt .NET Système de bibliothèques et de voir exactement où l'exécution échoue.

Merci d'avance.

MODIFIER: C'est l'affichage de code:

private void DrawImage(Image image)
{
  Point leftCorner = new Point((this.Bounds.Width / 2) - (image.Width / 2), (this.Bounds.Height / 2) - (image.Height / 2));
  _graphics.DrawImage(image, leftCorner);
}

le chargement de l'image de code:

private void LoadImage(string filename, ref Image image)
{
  MemoryStream memoryStream = DecryptImageBinary(Settings.Default.ImagePath + filename, _cryptPassword);

  image = Image.FromStream(memoryStream);

  memoryStream.Close();
  memoryStream.Dispose();
  memoryStream = null;
}

_image est global et sa référence est mise à jour en LoadImage. Ils sont passés comme paramètres que je veux changer la référence globale à partir d'aussi peu d'endroits possible uniquement et de garder les autres méthodes autonome. _graphics est aussi mondiale.

J'ai aussi un contrôle webBrowser pour les sites web et je afficher une image ou un site web à la fois. quand il est temps d'afficher une image, il exécute le code suivant:

webBrowser.Visible = false;
panel.Visible = true;
DrawImage(_image)
_image.Dispose();
_image = null;

_image référence à une image préchargée.

Espère que cette aide.

source d'informationauteur Michali