Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2956 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Resolu] [C++ / thread / windows] Demarrer une methode en Thread ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu] [C++ / thread / windows] Demarrer une methode en Thread ?

n°496947
Phod
Glouloulou ?
Posté le 25-08-2003 à 15:18:35  profilanswer
 

J'ai juste besoin d'un petit coup de pouce tout simple...
 
Comment je doit m'y prendre pour lancer cette methode dans un thread ?
 

Code :
  1. int TFTPForm::SendVidageByFtp(AnsiString nomFic)


 
SendVidageByFtp n'est pas une boucle, il s'agit d'un traitement qui dure quelque seconde et se termine. D'apres ce que j'ai compris il faut que j'utilise un thread en mode detaché ( j'ai pas besoin d'attendre la fin du traitement ds le processus principal)
 
ca fait un moment que je cherche et j'y capte rien, y a trop de pointeur sur **void avec des cast a la c.. et heu... c trop compliqué pour ma ptit tete (d'ailleur elle a mal maintenant ma tete)  :pt1cable:  
 
En gros ce que je veut faire c'est :

Code :
  1. int toto::unemethode(int i)
  2. {
  3. ...
  4. AnsiString nomFic = "coucou.txt"
  5. ...
  6. ThreadStart_ou_qq_chose_du_style(FTP->SendVidageByFTP,nomFic)
  7. ...
  8. }


 
PS : Je suis avec Builder C++, sous windows
 
Si vous avez un bout d'exemple ou un morceau de vieu code ca m'interresse aussi :)


Message édité par Phod le 26-08-2003 à 14:47:29

---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
mood
Publicité
Posté le 25-08-2003 à 15:18:35  profilanswer
 

n°496991
LetoII
Le dormeur doit se réveiller
Posté le 25-08-2003 à 16:00:40  profilanswer
 

Tu crée une nouvelle classe héritant de TThread, tu lui passe une référence sur l'objet dont elle doit appeler la méthode, et dans le run (je suis plus sûr du nom de la méthode) tu appel ta méthode.


---------------
Le Tyran
n°497119
Phod
Glouloulou ?
Posté le 25-08-2003 à 16:53:12  profilanswer
 

thx :)
la methode a surcharger c'est Execute...
 
codage en cours...
 
si ca marche j'edit avec le code a ecrire (pour que tlm en profite)
 
Edit:
bon, je croi bien que ca marche :)
 
donc, dans un .h :
 

Code :
  1. class TProcessus1 : public TThread
  2. {
  3. public:
  4.   TFTPForm* pFTPForm;
  5.   AnsiString nomFic;
  6.   __fastcall TProcessus1(bool CreateSuspended,TFTPForm* pForm,AnsiString nFic);
  7.   void __fastcall Execute();
  8. };


 
dans le .cpp :

Code :
  1. __fastcall TProcessus1::TProcessus1(bool CreateSuspended,TFTPForm* pForm,AnsiString nFic) : TThread(CreateSuspended)
  2. {
  3.   pFTPForm=pForm;
  4.   nomFic=nFic;
  5.   FreeOnTerminate=true;
  6. }
  7. //---------------------------------------------------------------------------
  8. void __fastcall TProcessus1::Execute()
  9. {
  10.   pFTPForm->SendVidageByFtp(nomFic);
  11. }


 
 
et pour demarrer le thread, il suffit de mettre cette ligne :

Code :
  1. TProcessus1(false,FTPForm,nf);


 
 
Je ne sais pas si c'est la meilleur solution mais ca a l'air de fonctionner :)  
:bounce:


Message édité par Phod le 26-08-2003 à 14:46:16

---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
n°499597
Ashe2
Posté le 27-08-2003 à 14:04:22  profilanswer
 

Tumdudum
 

Code :
  1. // thread.h
  2. class Thread
  3. {
  4. protected:
  5.   virtual DWORD Procedure() = 0;
  6. private:
  7.   static DWORD CALLBACK ProcedureProxy( LPVOID p )
  8. };
  9. // thread.cpp
  10. DWORD CALLBACK Thread::ProcedureProxy( LPVOID p )
  11. {
  12.   return reinterpret_cast<Thread *>(p)->Procedure();
  13. }
  14. // test.cpp
  15. class Blah
  16. {
  17. // ...
  18.   DWORD Procedure()
  19.   {
  20.     Sleep( INFINITE ); // le thread super utile
  21.     return 0;
  22.   }
  23. };
  24. Blah lala;
  25. CreateThread( ..., Thread::Procedure, reinterpret_cast<LPVOID>(&lala) );


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Resolu] [C++ / thread / windows] Demarrer une methode en Thread ?

 

Sujets relatifs
valeur d'un cookie [resolu] nv question voir msg 11Ecriture zone mémoire dans un fichier donne n'importe quoi (resolu)
[html css] l'id des div doit etre unique? resoluIntercerpter des messages depuis une sous-classe de TComponent [resolu
[CSS] probleme de couleurs resoluphp et date Oracle[résolu]
Problème avec boucle [résolu]Pièges du dev sur Windows Japonnais
checkbox multiples [résolu][Windows] Probleme de connection TCP :/
Plus de sujets relatifs à : [Resolu] [C++ / thread / windows] Demarrer une methode en Thread ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR