begin process at 2012 05 29 22:35:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probleme thread: fenetre gelee


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme thread: fenetre gelee

mercredi 1 juin 2005 à 18:13:34 | Probleme thread: fenetre gelee

wiool

Salut a tous,

J'ai un ptit probleme avec des thread:
J'ai mon prog principal qui appelle un thread qui va regulirement (5sec) verifier s'il faut pas rendre un des panels visible et qui le rend visible si besoin.
Mais voila, ca marche bien pour rendre le panel visible, mais quand ThreadTask(); est rapele (apres 5sec) ca fait tout planter.... C'est quoi le probleme ??

public __gc class Form1 : public System::Windows::Forms::Form
{

Thread* checkNewClients;
private: System::Windows::Forms::Panel * pnl_user2;

// Ici j'initialise mon pnl_user2

private
: System::Void form1_Load(System::Object * sender, System::EventArgs * e)
{

   ThreadStart *myThreadDelegate = new ThreadStart(this, repeat);
   checkNewClients =
new Thread(myThreadDelegate);
   checkNewClients->IsBackground =
true;
   checkNewClients->Start();

}

__delegate void DelegateThreadTask();
private: void ThreadTask(){
   if(this->pnl_user1->Visible==false) {
            this->pnl_user2->Visible=true;
            
t
his->Refresh();
   }
}

private: void repeat() {
   while(true) {
      ThreadTask();
      Thread::Sleep(5000);
   }
}
}

mercredi 1 juin 2005 à 20:22:31 | Re : Probleme thread: fenetre gelee

poppyto

Membre Club Administrateur CodeS-SourceS
>>> ca fait tout planter.... C'est quoi le probleme ??

Pas de problème apparant...utilises le debug de vs.net, il y a probablement un pointeur nul qui rode (cauchemard de programmeur ? :D )

Stef
[ Lien ] LE site pour les bassistes
mercredi 1 juin 2005 à 20:33:52 | Re : Probleme thread: fenetre gelee

wiool

Je crois avoir pige le probleme: on peux pas modifier un form depuis un autre thread que celui qui cree le form.
Donc, si j'ai bien compris, il faudrais utiliser des delegates et de MethodInvoker... (dites moi tout de suite si j'ai tort)
 J'ai cherche sur google un exemple et j'en ai plein, mais en VB et C#, jamais en c++... et j'ai bien essaye d'adapter mais je bug sur
 MethodInvoker mi = new MethodInvoker(form.control);
en c++ il me demande 2 parametre au constructeur de MethodInvoker.... c'est quoi ????
Un peu de code ca fera pas de mal, voila ce que j'essaie de faire maintenant (et arretez moi si je me plante de dirsction, ca m'evitera de perdre trop de temps )

__delegate void DelegateThreadTask();
private: void ThreadTask(){
   if(this->pnl_user1->Visible==false) {
            this->pnl_user2->Visible=true;
            
t
his->Refresh();
   }
}

private: void repeat() {
   MethodInvoker* mi = new MethodInvoker( JEMETKOIICI ????? , this->DelegateThreadTask); <-- le probleme maintenant

   while
(true)
{
      this->BeginInvoke(mi);
      Thread::Sleep(5000);
   }
}

merci merci

mercredi 1 juin 2005 à 20:43:07 | Re : Probleme thread: fenetre gelee

poppyto

Membre Club Administrateur CodeS-SourceS
 Control.Invoke semble mieux convenir ?

[ Lien ] LE site pour les bassistes
mercredi 1 juin 2005 à 20:49:19 | Re : Probleme thread: fenetre gelee

wiool

OUF J'ai trouve...
Pour un tutorial alez voir la: [ Lien ]
Pour info, j'ai bien utilise le MethodInvoker:

MethodInvoker* mi = new MethodInvoker(0,this->UpdateUsers);

Mais vus que le premier parametre est 0, il faut passer le nom d'une fonction static en deuxieme parametre, et vu que une fonction statique n'accede qu'a des objets statique, j'ai declare un

static Form1 myForm;

Auquel ensuite je donne le form courant (this)....

et donc je peux acceder a tout mes objets de formulaire depuis ma fonction DelegateThreadTask : OUF

Merci poppyto pour ton aide,

a-+

mercredi 1 juin 2005 à 20:54:50 | Re : Probleme thread: fenetre gelee

poppyto

Membre Club Administrateur CodeS-SourceS
Mouai je suis pas convaincu par la pertinance de MethodInvoker pour ce problème:

ceci : http://www.csharpfr.com/code.aspx?ID=29068
ça a l'air beaucoup plus sympa non ?

Bonne chance ^^

[ Lien ] LE site pour les bassistes


Cette discussion est classée dans : system, probleme, visible, thread, checknewclients


Répondre à ce message

Sujets en rapport avec ce message

probleme avec les thread [ par macnao ] bonjour, je n'arrive pas à utiliser des threads avec builder 6, c'est a dire que je dois créer trois threads et ils doivent tourner en boucles, je sui MultiThread: Probleme [ par CriPpLe ] Bonjour, depuis longtemps j'essai de creer un nouveau thread dans mon programme pour qu'il excecute des actions sans pour autant freezer le programme probleme avec les threads [ par chedly_ensi ] Bonjour, j'ai un code source que je dois comprendre, en suivant les instructions, je trouve dans l'un des fichiers: ////////////////////////////////// Probleme thread linux ... [ par Tidam ] Voila mon probleme, quand je ve compiler il me sort une erreur : passing `void (*)(void *)' as argument 3 of `pthread_create(pthread_t *, const pthrea probleme de thread [ par Palex ] bonjourje devellope actuelleemnt un appli mutlitache avec des thread mais je trouve pas de bon tutorial en francais si possible sur les thread donc si probleme thrtead (je galaire) [ par khamine ] salut tous le monde.j'ai essayé de me connecter a une base de données dans un thread mais ca marche pas. alors j'ai crée une nouvelle classse ou je me probleme de Thread [ par lamoueste ] Bonjour j'ai un probleme de declaration avec ce thread : HANDLE hThreadStop = CreateThread(NULL,CREATE_SUSPENDED,OnStop,NULL,0,&dwThreadStop); et le probleme [ par chinois57 ] bjr tt le monde voila g un probleme je voudrer maitre ce code ( en C) qui marche en console dans une fenetre windows application merci de maider   #in MFC Probleme d'utilisation de variable propre au graphique [ par donslim ] Salut à tous : Donc voilà mon problème,je travaille avec MFC et  je voudrais utiliser ma variable m_L1 de type CListBox dans un thread qui est défini Probleme fonction [ par largo118 ] Bonjours a tous je voudrait savoir comment il faut faire pour ouvrir un fichier .exe dont l'adresse contient un espace.Je vous montre mon probleme : J


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,462 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales