wiool
Messages postés7Date d'inscriptionjeudi 10 février 2005StatutMembreDernière intervention 2 juin 2005
-
1 juin 2005 à 18:13
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 mai 2011
-
1 juin 2005 à 20:54
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
{
wiool
Messages postés7Date d'inscriptionjeudi 10 février 2005StatutMembreDernière intervention 2 juin 2005 1 juin 2005 à 20:33
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
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-+
Vous n’avez pas trouvé la réponse que vous recherchez ?