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

Qt Discussion :

Fonctionnement de QThread


Sujet :

Qt

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut Fonctionnement de QThread
    Bonjour,

    Je voudrais savoir comment on peux faire pour déclencher des instructions en même temps que mon Thread ou recevoir des signaux pendant que le Thread tourne car lorsque je lance mon Thread tout le reste de l'application est paralysé !

    Je vous remercie d'avance

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Comment gères tu ton QThread car normalement si tu lances des traitements dans un thread cela ne devrais jamais figer ton thread principal.

    Laisse un peu de code montre comment tu t'y prends et après on verra...

    Nota: La doc Qt est bien faite pour tout ce qui est explication sur les thread de même tu as des exemples dans la FAQ Qt de developpez.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    Bonjour Superjaja,

    Voici comment je le lance dans une de mes classes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConnexionStatusThread::getInstance()->start();
    et voici ce qu'il fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    void ConnexionStatusThread::run()
    {
    	timeNetw.start();
    	forever
    	{
    		if(timeNetw.elapsed() > 15000)
    		{
    			processTimeAndNetw();
    			ConnexionStatusThread::getInstance()->exit(0);
    		}
     
     
    		msleep(10000);
    	}
    }
     
    void ConnexionStatusThread::processTimeAndNetw()
    {
    	QDateTime dateTime;
     
    	MessagingSystemSerial::EConnectionStatus status;
     
    	status = MessagingSystemSerial::getInstance()->getDateTimeAndConnectionStatus(&dateTime);
     
    	if(MessagingSystemSerial::getInstance()->getConnectionStatus() != status)
    		MessagingSystemSerial::getInstance()->setConnectionStatus(status);
     
    }
    le soucis c'est que moi je voudrais qu'en parallèle il récupère les connexions de socket sur le server en permanence !

    par exemple à chaque fois que le thread (récupère des messages) fait une récupération, qu'il vérifie qu'une connexion n'est pas disponible avec un WaitForNewConnection() !

    mais si je le lance à partir du thread de récupération de message, il me sort une erreur au niveau de la socket qui est :

    QSocketNotifier: socket notifiers cannot be disabled from another thread
    QSocketNotifier: socket notifiers cannot be enabled from another thread
    QObject: Cannot create children for a parent that is in a different thread.
    (Parent is QTcpServer(0x2619e0), parent's thread is QThread(0x2603c0), current thread is ConnexionStatusThread(0x2614e0)


    Voila ce qui ce passe donc je sais pas trop quoi faire !

    Merci pour ton aide Superjaja et aussi merci pour le tuyau je pense jamais à aller chercher là bas

  4. #4
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    D'apres ce que je comprend c'est que tu fait appel a un abjet QTcpServer qui est surement déclarer dans le thread principal et par conséquent ne peux etre utilisé dans ton deuxieme thread. A mon avis il va falloir que tu reorganise ton programme pour que cela fonctionne avec des thread.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    J'ai réorganisé mon code et tout marche maintenant !

    En fait j'avais une thread qui tournait et qui me servait à rien, je l'ai enlevé et réorganisé mon code et voilà j'arrive à tout faire tourner simultanément !

    merci de ton aide Superjaja

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

Discussions similaires

  1. [Thread] Comment faire fonctionner QThread?
    Par Elv13 dans le forum Multithreading
    Réponses: 1
    Dernier message: 07/05/2008, 15h49
  2. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  3. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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