Yunchi
Messages postés100Date d'inscriptionlundi 30 octobre 2006StatutMembreDernière intervention14 avril 2009
-
2 août 2007 à 09:24
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
3 août 2007 à 16:16
Bonjour,
J'ai une interface graphique en gtk. Lorsque je click sur un bouton, ca lance la fonction void fonction(); au debut de cette fonction je cree un thread qui va afficher du texte dans un entry. Le thread est cree avec
g_thread_create(mon_thread,NULL,FALSE,&error)
dans void fonction() j'ai donc en tout debut cette instruction puis des sleep.
Le probleme est que le thread ne se lance qu'a la fin de la fonction alors qu'elle devrait se lance au debut :/
par exemple :
void fonction(){
//declaration des variables
g_thread_create(send_thread,NULL,FALSE,&error);
//instruction 1
//sleep(5000);
//instruction 2
}
Le thread affiche en continue dans une entry du texte. Logiquement lorsque j'appelle la fonction void fonction, ca devrait commencer a afficher du texte dans l'entry puis passer a l'instruction 1, attendre 5s et executer l'instruction 2. Mais lorsque je lance fonction, ca attend 5s avant de commencer a afficher du texte dans l'entry donc j'en conclu que le thread ne se lance qu'a la fin de la fonction ?
Si quelqu'un sait comment regler ce probleme et lancer le thread en debut de fonction ...
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 2 août 2007 à 11:41
Tu n'as pas le droit d'agir sur la GUI à partir d'un thread sauf en utilisant les fonctions g_thread_enter_ et g_thread_leave ou un truc comme ca. Bref c'est le merdier, donc jamais utiliser de thread pour écrire dans une text entry.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 3 août 2007 à 16:16
Remarque, ya longtemps que j'ai pas fais de gtk, mais doit surement y avoir l'équivalent des "posted events" qu'on trouve en Qt ou wxWidget. Ces events font le lien entre des threads et le thread principal.