IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[Win32]App multithread


Sujet :

Windows

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 41
    Points : 38
    Points
    38
    Par défaut [Win32]App multithread
    Bonjour ,

    Mon appilcation nécessite plusieur thread . Je souhaite donc utilisé la fonction CreateThread() de l'API Win32 . Mais le compilateur m'indique une erreur lors de la compliation alors que j'ai pratiquement recopier l'exemple d'un livre .

    Voisi ce que j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CreateThread(NULL, 0, RunSrvThreadProc, param, 0, &RecvThreadID);
    En fait ce bout de code est appellé dans une méthode de ma classe CCocketManager et la procedure RunSrvThreadProc() est egalement une méthode de cette meme classe . Le compliateur(.NET) m'indique :

    error C2664: 'CreateThread'*: impossible de convertir le paramètre 3 de 'DWORD (LPVOID)' en 'LPTHREAD_START_ROUTINE'

    Je pense que le probleme est qu'ils sagit de fonctions membre mais comment faire ?

    J'ai egalement essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CreateThread(NULL, 0,&RunSrvThreadProc, param, 0, &RecvThreadID);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CreateThread(NULL, 0,this->RunSrvThreadProc, param, 0, &RecvThreadID);
    Mais sans plus de succes !!!!

    Voila et merci ...

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Salut,

    Va voir l'URL http://support.microsoft.com/default...NoWebContent=1

    En gros, il faut que tu déclares ta fonction membre RunSrvThreadProc en statique avec en paramètre l'instance de ta classe (this):

    static RunSrvThreadProc(CCocketManager*);

    A l'appel, cela donne

    CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)(myCocketManager.RunSrvThreadProc), &myCocketManager, 0, &RecvThreadID);

    si ton instance s'appelle myCocketManager.

    Il faudra aussi faire attention à tes paramètres (dans ton code param) que je remplace par un pointeur sur l'instance.
    Nicolas Diétrich

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    as tu bien declarer RunSrvThreadProc comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int WINAPI RunSrvThreadProc(void* ptr) {}

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Merci ndietrich je pense que c'est la bonne voit mais le probleme c'est que CreateThread() est appellé dans une méthode de la meme classe que la Methode RunSrvThreadProc() .

    Pour la definition de la classe CSockManager j'ai donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class CSockManager
    {
    private:
                    ........................
                    ........................
                    ........................
    public:
                    ........................
    	static DWORD WINAPI RunSrvThreadProc(CSockManager*); 
                    ........................
    };
    Mais le compilateur refuse ceci puisque je lui demande comme parametre de RunSrvThreadProc() un objet CSockManager alors que cette classe n'est pas encore definit

    Comment faire ?

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    En fait je dis n'importe quoi , ca marche tres bien . Mille fois merci à ndietrich sans qui je n'aurai jamais resolut le probleme .

    Terible !!!!!!

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Nicolas Diétrich

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Console App VS Win32 app cacher console
    Par kaiser92 dans le forum Visual C++
    Réponses: 1
    Dernier message: 15/03/2010, 23h41
  2. WPF, Win32 app, XAML et code-behind?
    Par sacoum dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 27/05/2008, 10h06
  3. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  4. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 13h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo