Problème de region déja verouillée avec LockBits.

cs_necrid Messages postés 5 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 5 avril 2006 - 5 avril 2006 à 20:24
guyom38 Messages postés 1 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 14 octobre 2009 - 14 oct. 2009 à 11:53
Salut tout le monde,
dans mon code, j'utilise LockBits et UnlockBits dans un thread, mais il y a une erreur recurrente qui apparait. Le code a a peu prés la structure suivante :


private
void Thread1()


{



Bitmap outPic;
BitmapData BoutPic =
null;



Byte* oBase =
null;

outPic =
new System.Drawing.
Bitmap(Largeur, Hauteur);







while (
true)


{




outPic = inPic;



BoutPic = outPic.LockBits(
new
Rectangle(0, 0, Largeur, Hauteur),
ImageLockMode.ReadOnly,
PixelFormat.Format24bppRgb);








oBase = (
Byte*)BoutPic.Scan0.ToPointer();


/***********/

Plein de trucs ICI

/***********/

outPic.UnlockBits(BoutPic);




}




}

Le problème est que au bout d'un certain nombre d'itération de la boucle while, une erreur survient disant que la région est déja vérouillée, alors que je la dévérouille régulièrement.

En faisant la modif suivante :


private
void Thread1()


{



Bool LockTest;
Bitmap outPic;
BitmapData BoutPic =
null;



Byte* oBase =
null;

outPic =
new System.Drawing.
Bitmap(Largeur, Hauteur);







while (
true)


{




outPic = inPic;


LockTest = false;



while (LockTest ==
false)


{



try


{


BoutPic = outPic.LockBits(
new
Rectangle(0, 0, Largeur, Hauteur),
ImageLockMode.ReadOnly,
PixelFormat.Format24bppRgb);




LockTest =
true;


}



catch (System.
Exception e)

{




BoutPic =
null;




}


}


oBase = (
Byte*)BoutPic.Scan0.ToPointer();


/***********/

Plein de trucs ICI

/***********/

outPic.UnlockBits(BoutPic);




}




}

Ca marche alors en mode debug, mais en éxecution sans debug, l'erreur survient beaucoup plus souvent qu'en mode débug (étrange non ?!), ce qui fait tourner la boucle while(LockTest == false) pendant quelque dixièmes de seconde parfois, ce qui ralentit mon programme et me gène beaucoup !
Pourquoi le résultat est-il différent en debug et en normal ?
Quelqu'un aurait-il une soluce efficace à proposer ?

merci pour les réponses !

1 réponse

guyom38 Messages postés 1 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 14 octobre 2009
14 oct. 2009 à 11:53
Salut actuellement sur VB.NET 2008 Express
J'ai le meme message !

Thread !
Avec traitement et affichage dans picturebox !
Ca marche ... mais desque je bouge la fenetre avec mon bitmap qui se raffraichit en dehors de l'écran et que je le ramene ! AIE !!!

Région bitmap déjà verrouillée.

J'ai l'impression que la FORM verrouille ou raffrachit la fenetre et donc plante mon prog.

Si t'as trouvé, je suis preneur !!!
Merci d'avance.
0
Rejoignez-nous