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

MFC Discussion :

VC++ 6.0 : Problème Implémentation de Thread


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 613
    Par défaut VC++ 6.0 : Problème Implémentation de Thread
    Bonjour,

    J'ai un problème pour savoir comment implémenter un thread dans la classe CmainFrame d'une application sur laquelle j'apporte des évolutions.

    Dans cette classe une fonction OnSeConnecter() tente une connexion socket à intervalle régulier (Timer) en utilisant notamment un appel à la fonction connect() de la classe CSocket.

    Or cet appel prend pas mal de temps et du coup ralentit mon IHM et l'accés aux menus lorsque le PC qui déroule mon application est seul sur le réseau (pas de réponse immédiate à la fonction connect() ).

    1) Donc je cherche une solution pour éviter que mon IHM soit extrêment ralentie dés que je passe dans OnSeConnecter(). J'ai pensé à un Thread, mais je suis preneur d'une solution plus simple.

    2) Puis je utiliser un Thread dans la classe CMainFrame ?
    J'avais pensé transformer la fonction OnSeConnecter() en Thread.

    Merci d'avance pour vos conseils.
    Si vous avez besoin d'infos supp, demandez moi.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    ta fonction ThreadSocketConnexion doit etre statique à la classe ....
    voir faq: http://c.developpez.com/faq/vc/?page...keWorkerThread

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 613
    Par défaut
    Excuses moi, mais j'ai complètement remanié ma question entre-temps.
    Et j'ai effectivement corrigé ce point entre autres.
    Du coup je me pose des questions plus générales.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    oui tu peux tout a fait mettre un thread dans la classe CMainFrame.
    le thread se terminant quand la connexion est réalisée ou échouée.
    tu peux alors envoyer un message privé a la mainframe pour donner le résultat du statut de la connexion...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 613
    Par défaut
    J'ai déclaré dans ma classe CMainFrame une procédure static, qui n'est pas une fonction membre de la classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    static UINT ThreadSocketConnexion(LPVOID pParam) 
    {...}
    Cette fonction doit-elle aussi être déclarée dans le fichier CMainFrame.h ?
    En dehors de la classe ?

    Merci.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    J'ai déclaré dans ma classe CMainFrame une procédure static, qui n'est pas une fonction membre de la classe.
    "Illogic, captain" -- Mr. Spock.

    http://c.developpez.com/faq/cpp/?page=static
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Problèmes avec TIdFtp et l'implémentation en thread
    Par doomware dans le forum Langage
    Réponses: 14
    Dernier message: 16/04/2011, 10h52
  2. problème sur les threads et les sémaphores
    Par ramislebob dans le forum Windows
    Réponses: 1
    Dernier message: 29/06/2006, 11h52
  3. [C#] Problème sur un Thread
    Par bisounux dans le forum Windows Forms
    Réponses: 7
    Dernier message: 27/04/2006, 20h43
  4. Problème dans un thread
    Par BNS dans le forum MFC
    Réponses: 3
    Dernier message: 23/03/2006, 14h21
  5. Réponses: 5
    Dernier message: 10/05/2005, 10h22

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