Thread avec TTimer [Résolu]

Signaler
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008
-
Messages postés
1
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
29 mars 2009
-
Bonjours, je remarquer une chose qui me dérange. J'ai creer un thread (avec class(TThread) ). Je met a l'interieur de ce thread un TTimer. Lorsque je creer mon thread a partir d'une Form, tout va bien.
Mais mon problème apparait lorsque je creer mon thread a partir d'un autre thread, la tout a l'air de ce passez bien (la methode execute tourne en bloucle (while not(Terminated)) mais contrairement a la première situation l'evenement OnTimer de mon Timer n'est jamais appellé.

  Que pensez vous de mon problème? existe-t-il une solution? ou doit-je contourner le problème en creant un evenement dans le premier thread qui s'executerai sur ma form qui lancerai le deuxieme thread.

PS: Contourner le problème marche mais ma curiosité me pousse a essaye de comprendre plus profondement mon pb.

Merci de votre aide.

12 réponses

Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

Voila, Après cet introspection a l'interieur de moi meme (pléonasme) je conclue que des fois au lieu de chercher soi-même faut faire cherchez GOOGLE lol.

Pour ce que sa interesse la solution (j'ai pas encore essaye) a mon problème
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

Precision: Pour la creation de mon Timer je fait TTimer.create(nil);
sa vient peut etre de nil mais je ne sait pas quoi mettre d'autre, self ne marche pas.
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

Bon j'ai régler mon problème, comme dans beaucoup de problème lier au thread l'oubli de synchronize resoud bcq de chose.

J'ai creer mon deuxieme thread a l'interieur de mon premier dans une procedure executer avec synchronize.
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

Et bien continuons ce monologue:
Je me heurte a un nouveau problème!!!

Comment faire l'équivalent d'un synchronize quand on a creer le premier thread avec "CreateRemoteThread". (Voir la source de Eguevel)
Je m'explique, cette fois j'injecte une dll (donc je creer un thread ds un autre processus) et je me heurte au meme problème que celui du premier post si je creer un nouveau thread dedans. Sauf que pour le regler je n'ai plus la methode synchronize.

Existe-t-il sychronize avec comme parametre l'id du thread? quels peuvent etre les solution? merci de votre aide ; )
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

Bizarre je doit pas creer de nouveau thread en fait avec CreateRemoteThread car si j'affiche un showmessage il fige l'application et que GetCurrentThreadID et MainThreadID sont egaux.
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

Erreur vient de synchronize: j'apelle syncrhonize depuis mon thread mais la procedure qui doit etre syncrhonizer ne se lance jamais. Delphi doit installer quelque chose dans le thread principal pour l'utilisation de synchronize qui n'est pas installer qd on inject une dll avec createremotethread.
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

Encore un probleme!
Qd je creer mon premier thread j'ai les meme symptome qu'au debut.

Donc je reExplique: J'injecte une dll dans un processus d'ou je creer un thread avec un TTimer dedans helas l'evenement onTimer n'est jamais appeler. Je n'est pas ce pb si je creer mon thread a partir d'une form.

Apparament ce pb apparait lorsque je creer un thread a partir d'un thread qui n'est pas le thread principal. Mais si c'est le thread principal d'un autre processus (injection dll) le pb revient.

Merci de votre aide (hesiter pas a me couper ds mon monologue lol)
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

J'ai observer le fonctionnement d'un TTimer, il creer une fenetre invisible de facon a pouvoir recuperer des message par la fonction adresse a l'handle de sa pseudo fenetre "procedure WndProc(var Msg: TMessage);"
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
Si je faisait ce que tu viens de faire a chaque fois que je rencontre un probleme,
je taperais des monologue de 24 pages en moins de 30 minutes.

je pense que le temps moyens de réflexions avant d'aller poser la question sur un forum devrait etre :

pour un debutant : 24 a 48H
pour un novice : 12 a 24H
pour un avertis : 4 a 8H
pour un expert :

<hr size="2" width="100%" />
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

J'avoue qu'au debut je pensait partir sur un truc comme sa et en regardant maintenant je trouve sa bête, je suis d'accord avec toi.
Messages postés
11
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008

"partir" -> "pas partir"
Messages postés
1
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
29 mars 2009