Probleme de pointeur et de thread??

Signaler
Messages postés
2
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
29 avril 2006
-
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
-
Bon jours,
Voila j'essaie de faire un petit programe afin de me familiariser avec les thread...
 Afin de pouvoire passer des parametres a mon thread je creer une classe ou je pase les parametre via le constructeur, puis une methode de cette classe declanche le procesuus (suis je clair?)
Mais mon porobleme c'est qu'il me met un message d'erreur a la compil que je ne comprend pas??JE dois avoire un probleme de pointeur mais je ne vois pas ou.
Voici mon code:
#include

"addition.h"
// [C++]

// Compile using /clr option.

#using

<mscorlib.dll>

using
namespace System;

using
namespace System::Threading;

 

public

__gc
class addi{

private

:

int _a;

int _n;
public

:addi(

int a,
int n){

_a=a;

_n=n;

}

void executeThread(
void){

Console::WriteLine(

"Index : " + _a);Console::WriteLine(

"Message : " + _n);}

};

int main() {

Console::WriteLine(S

"Main thread: Start a second thread.");

addi* test=

new addi(5,1);

Thread* b=

new Thread(
new ThreadStart(0,test->executeThread));b->Start();

// Console::WriteLine();

return 0;}

et voici mon erreur:

------ Build started: Project: threadtest, Configuration: Release Win32 ------

Compiling...

main.cpp

.\main.cpp(39) : error C3867: 'addi::executeThread': function call missing argument list; use '&addi::executeThread' to create a pointer to member

.\main.cpp(39) : error C3350: 'System::Threading::ThreadStart' : a delegate constructor expects 2 argument(s)

Build log was saved at "file://c:\Documents and Settings\Administrateur.TITANIUM\Mes documents\Visual Studio 2005\Projects\threadtest\threadtest\Release\BuildLog.htm"

threadtest - 2 error(s), 0 warning(s)

======== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Quelqu'un aurais une idée de la ou je plante??
Mercii

3 réponses

Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
9
Ligne 39:

new Thread(new ThreadStart(0,test->executeThread));

Tu a oublié les parenthèses à executeThread : correction :

new Thread(new ThreadStart(0,test->executeThread()));
Messages postés
2
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
29 avril 2006

Merci, mais j'y avais deja penser, et il me met a la compil:
------ Build started: Project: threadtest, Configuration: Release Win32 ------

Compiling...

main.cpp

.\main.cpp(44) : error C3364: 'System::Threading::ThreadStart' : invalid argument for delegate constructor; delegate target needs to be a pointer to a member function

Build log was saved at "file://c:\Documents and Settings\Administrateur.TITANIUM\Mes documents\Visual Studio 2005\Projects\threadtest\threadtest\Release\BuildLog.htm"

threadtest - 1 error(s), 0 warning(s)

======== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

J'arrive pas avoire ou est le problemee arggg
Merchiii
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
9
Je pense qu'il faut que la fonction de démarrage du thread doit être statique, sinon il ne peut pas récupérer un pointeur vers cette fonction.