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

Langage Delphi Discussion :

Synchronisation VCL à partir de Thread


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Synchronisation VCL à partir de Thread
    Bonjour,

    L'utilise le composant Indy TIdTCPServer (Version 10) et je dois mettre à jour plusieurs liste "TListView" ainsi qu'une base de données Oracle avec les informations recueillies du client (Date et Heure de connexion et de déconnexion ainsi que les commandes à traiter). J'ai essayé avec des sections critiques mais au bout d'un moment mon application se fige, j'ai vu qu'on pouvait utiliser des méthodes de synchronisation mais je ne sais pas comment les implémenter, quelqu'un pourrait-il m'aiguiller ?


    Cordialement
    Daniel

  2. #2
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Thread
    Bonjour.

    Ne connaissant pas ton code, je ne peux que te conseiller de consulter
    l'aide sur deux choses.

    -1- L'object TCriticalSection qui est fait pour bloquer
    temporairement l'action des autres Thread.
    -2- La méthode Synchronize de l'objet TThread.

    Bon courage.

  3. #3
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    Salut,

    Oui sous Indy 10, il faut savoir que le thread du serveur est plus difficile à obtenir, mais que c'est possible.
    Il me semble que ton besoin est légitime (j'ai eu le même). Tu es par exemple dans le contexte (TIdContext) du OnExecute du serveur TCP, et tu dois intervenir dans l'affichage.

    Il est possible d'accéder ainsi à l'instance du thread à partir d'un TIdContext.

    Pour cela tu as besoin de ces uses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    uses
      IdThread, IdSchedulerOfThread;
    Ensuite ton code de synchro ressemble à cet exmple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
    var
      vThread: TIdThreadWithTask;
    begin
      if AContext.Yarn is TIdYarnOfThread then
        begin
          vThread := TIdYarnOfThread(AContext.Yarn).Thread;
          vThread.Synchronize(TaMethodeSynchronisee);
        end;
    end;
    Voilà ça devrait aller mieux ainsi, et tu peux laisser tomber les TCriticalSection

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Merci pour toutes ces informations, j'ai reussi à effectuer la synchronisation de mes objets VCL avec votre aide.

    Cordialement
    Daniel

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

Discussions similaires

  1. suspendre thread vcl à partir d'un thread secondaire
    Par omen999 dans le forum Langage
    Réponses: 3
    Dernier message: 25/06/2009, 13h42
  2. [Thread] synchronisation "gestions de nombreux threads"
    Par wakan dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 06/04/2009, 15h37
  3. Réponses: 7
    Dernier message: 10/04/2008, 13h59
  4. Synchronisation de groupe de threads
    Par millie dans le forum Concurrence et multi-thread
    Réponses: 0
    Dernier message: 08/04/2008, 11h38
  5. [Avis aux pros !] Problèmes de la VCL avec les threads
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/02/2006, 22h38

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