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

Signaler
Messages postés
5
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
5 avril 2006
-
Messages postés
1
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
14 octobre 2009
-
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

Messages postés
1
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
14 octobre 2009

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.