Empecher un thread de se terminer

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 15 avril 2005 à 11:49
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 23 avril 2005 à 02:06
Bonjour a tous,
voila je suis en train de developper une application ou j'affiche l'image d'une webcam... seulement pour ne pas bloquer l'application, je voudrais que tout qui s'occupe de l'affichage de la cam soit lancer dans un thread, seulement mon thread se termine apres, et je perd donc l'affichage de ma cam. Ma question est donc comment empécher qu'un thread se termine?
Bob...

"La chance accorde ses faveur aux esprits avertis..."

9 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 avril 2005 à 12:07
Bien que je ne l'ai jamais utilisée, je pense à la fonction
WaitForSingleObject à la fin de ton thread, mais je ne vois pas ce que
ca change. Meme si ton thread ne se termine pas, l'affichage
disparaitra pour la même raison. Il faudrait voir a quoi ressemble ton
thread.
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
15 avril 2005 à 12:15
voila mon thread:

// thread pour l'affiche de la cam
DWORD WINAPI ThreadWebCamProc(
void *)
{
WebCamConnect(Param.x, Param.y, 320, 240);
WebCam.ChooseSource();
WebCam.AfficheWebCam();

return 0;
}

en fait lorsque mon thread se termine, bah l'affichage n'est pu opérationnel... la solution qui me vient donc a l'esprit est d'empecher mon thread de se terminer !
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 avril 2005 à 12:59
Ah oui en fait ton image ne s'affiche qu'une seule fois quoi. Tu peux
faire ce que j'ai dire, ou même utiliser une simple variable globale
pour savoir quand le thread doit se terminer:



BOOL bEndThread;



DWORD WINAPI ThreadWebCamProc(void *)

{

WebCamConnect(Param.x, Param.y, 320, 240);


WebCam.ChooseSource();

while(!bEndThread)

{

WebCam.AfficheWebCam();

Sleep(...);

}

return 0;

}



bEndThread est mis à 1 quand le thread doit se terminer. Tu choisis la
valeur que tu mets dans sleep, a mon avis en fonction du taux de
rafraichissement.
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
15 avril 2005 à 13:58
non ce n'est pas aussi simple que cela !
en fait j'utilise les API pour afficher l'image de la cam, la fonction AfficheWebCam(), ne doit etre appeler que une seul fois, et elle envoie en continue l'image prise par la cam et cela en continue !
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 avril 2005 à 14:04
Dans ce cas la je comprends pas pourquoi le thread se termine (AfficheWebCam est-elle synchrone?)
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
15 avril 2005 à 15:22
voila le code de la fonction:


// Fonction qui affiche le preview


void CWebCam::AfficheWebCam()
{

// Taille du preview = taille de la résolution
capPreviewScale(hWnd_WC, TRUE);

// Rafraichissement
capPreviewRate(hWnd_WC, 15);

// Affiche
capPreview(hWnd_WC, 1);
}

Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 avril 2005 à 15:36
Je pense que je ne peux pas t'aider, je ne connais pas
les fonctions que tu utilises la. Je ne comprends pas comment marche
capPreview. Comment et quand cette fonction se termine-t-elle?
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
15 avril 2005 à 15:58
salut,

normalement le fait que tu termines ton thread ne devrait avoir aucun
impact sur ton objet webcam... celui ci existant ailleurs que dans ton
thread, il ne va pas se détruire quand ton thread s'arrete.... comment
l'objet webcam peut il se rendre compte de la fin du thread?????

essaye de voir si tu obtiens quelque chose en mettant Sleep(INFINITE); avant ton return 0;

'normalement' ca ne devrait pas regler ton probleme. si ca marche, le
Sleep(INFINITE) est a remplacer par un WaitForSingleObject(hEvent,
INFINITE), ou hEvent est un handle crée avec
CreateEvent(NULL, FALSE, FALSE, NULL); (et dans ce cas tu débloques ton
thread depuis l'exterieur (= un autre thread) en faisant un
SetEvent(hEvent); )



a+
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
23 avril 2005 à 02:06
excuser pour le retard de ma réponse, mais bon c'est les vacances et je decroche un peu du PC :)
effectivement cosmobob l'erreur ne vient pas réellement du thread, en fait je met que le AfficheCam et ca marche très bien la donc voila !
merci pour votre aide sinon et bonne prog a vous !
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
Rejoignez-nous