dbiare
Messages postés45Date d'inscriptionmercredi 30 novembre 2005StatutMembreDernière intervention 6 janvier 2006
-
19 déc. 2005 à 07:45
dbiare
Messages postés45Date d'inscriptionmercredi 30 novembre 2005StatutMembreDernière intervention 6 janvier 2006
-
19 déc. 2005 à 14:33
Bonjour tout le monde
J'aimerais faire un « thread » sous Visual C++6. D'après ce que j'ai pu comprendre (après lecture) je déclare (dans un objet dérivé de CDialog) la fonction (qui sera mon unité d'exécution) suivante :
vangeurmasker
Messages postés99Date d'inscriptionmercredi 12 mai 2004StatutMembreDernière intervention29 mars 2006 19 déc. 2005 à 08:44
J'ai eu des prolemes du genres. Essaie de sortir ta fonction ThreadFunc de ta classe. Je ne sait pas pourquoi mais chez moi c'était ça le problème. Si ta besoin des variables de ta classe tu passe un pointeur a ton thread.
dbiare
Messages postés45Date d'inscriptionmercredi 30 novembre 2005StatutMembreDernière intervention 6 janvier 2006 19 déc. 2005 à 11:14
Ok maintenant ça marche Grand Merci !
Mais j'ai un autre petit prob?
Dans mon objet dérivé de CDialog, je déclare :
void CThreadDlg::TestThread()
{
AfxBeginThread(ThreadFunc,(LPVOID)&var);
}
J'ai aussi déclaré une variable (int) var (variable que je passe à l'aide d'un pointeur de type void), laquelle je veux incrémenter lors de mon thread
Comme fonction globale je déclare mon unité d'exécution :
UINT ThreadFunc(LPVOID pParam)
{
int *pi=(int*)pParam;
(*pi)++;
return 0;
}
Mon prob c'est que, je ne rentre que une seule fois dans mon thread et je dois rappeler la fonction void CThreadDlg::TestThread() {?} pour re-rentrer dans mon thread ??
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 19 déc. 2005 à 11:33
C'est un problème qu'on a déja eu plein de fois. Si tu veux laisser la méthode dans ta classe, il faut la mettre en static
C'est normal que ton thread est lancé qu'une seule fois. Pourquoi, et comboi de fois veux tu réentrer dans le thread?
dbiare
Messages postés45Date d'inscriptionmercredi 30 novembre 2005StatutMembreDernière intervention 6 janvier 2006 19 déc. 2005 à 13:10
Si j'ai à peu prés compris le concept, une file d'attente est crée (géré par un algorithme) et un quantum de temps est alloué pour chaque unité d'exécution.
Ici, dans mon application je crée une Dialog Box, première unité d'exécution, et j'aimerais en crée une autre (d'unité d'exécution) car j'ai besoin de contrôler un automate et il me faut la possibilité (à tout moment) d'accéder à des boutons de ma Dialog Box pour stopper le process, le paramétrer, etc.
Le Thread que je veux générer me servirait à piloter l'automate. J'aimerais donc y entrer (et sortir) en permanence?
Tu comprends ce que je veux ? (je m?exprime pas toujours très bien ;-\)
Vous n’avez pas trouvé la réponse que vous recherchez ?
dbiare
Messages postés45Date d'inscriptionmercredi 30 novembre 2005StatutMembreDernière intervention 6 janvier 2006 19 déc. 2005 à 14:33
J'ai manqué de discernement ! J'aurais pu être plus perspicace mais ça y est j'ai tout (enfin je crois) compris !!! Mieux vaut tard que jamais :-)!
En tout cas merci pour le coup de la déclaration ?static? car la dessus je commencer à désespérer.
Merci encore