Problème ScreenShot

Problème ScreenShot - C#/.NET managed - Programmation

Marsh Posté le 27-02-2014 à 09:03:04    

Bonjours à tous,
 
je m'adresse à vous car j'ai des messages d'erreurs en relation avec des bitmaps.
Je voudrais réaliser une vidéo avec une liste de bitmaps, mon programme marche nickel sauf que
si je veux enregistrer une video qui dure plus de 25s (environ) le système m'affiche une erreur avant la fin de l'enregistrement.
Le paramètre n'est pas valide. à :
-Bitmap b = new Bitmap(Panel1.Width, Panel1.Height, PixelFormat.Format32bppArgb);
 

Code :
  1. public Bitmap ScreenShot()
  2.  {
  3.   Bitmap b = new Bitmap(Panel1.Width, Panel1.Height, PixelFormat.Format32bppArgb);
  4.   using(Graphics g = Graphics.FromImage(b))
  5.   {
  6.    g.CopyFromScreen(155, 225, 0, 0, Panel1.Size, CopyPixelOperation.SourceCopy);
  7.   }
  8.   return b;
  9.  }
  10.  public void boucleWhile()
  11.  {
  12.   while(stopWhile == false)
  13.   {
  14.    listImage.Add(ScreenShot());
  15.    Thread.Sleep(50);
  16.   }
  17.  }


 
boucleWhile() est dans un thread.
Et des fois le message indique que l'erreur provient de : g.CopyFromScreen(155, 225, 0, 0, Panel1.Size, CopyPixelOperation.SourceCopy);
alors que je ne change pas le code... :heink: (ça arrive environ une fois sur deux)
Si quelqu'un pourrait m'aider ?

Reply

Marsh Posté le 27-02-2014 à 09:03:04   

Reply

Marsh Posté le 27-02-2014 à 09:20:02    

A mon avis c'est justement parce que tu as des Threads avec des traitements qui se déroulent en même temps.
Tu devrais reprendre un cours sur les threads en ligne et voir s'il te manque pas, par exemple, une logique de verrous pour éviter les accès simultanés.

Reply

Marsh Posté le 27-02-2014 à 09:31:53    

Justement, je ne fais que d'appeler un seul thread et en plus je ne fais rien d'autre à coté !
 

Code :
  1. void Button2_Click(System.Object sender, System.EventArgs e)
  2.  {
  3.   boucle = new Thread(boucleWhile);
  4.   stopWhile = false;
  5.   boucle.Start();
  6.   tmp = false;
  7.   rec.Visible = true;
  8.   Button2.Text = "STOP";
  9.  }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed