Probleme de pointeur et de thread??

glycefr Messages postés 2 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 29 avril 2006 - 28 avril 2006 à 17:11
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 - 29 avril 2006 à 13:17
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

nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
28 avril 2006 à 17:45
Ligne 39:

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

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

new Thread(new ThreadStart(0,test->executeThread()));
0
glycefr Messages postés 2 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 29 avril 2006
29 avril 2006 à 10:22
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
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
29 avril 2006 à 13:17
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.
0
Rejoignez-nous