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 :

[Thread] Synchronize


Sujet :

Langage Delphi

  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut [Thread] Synchronize
    Salut

    Bon, mon code marche... Mais ce que je veux savoir c'est si ce n'est pas par miracle...

    Voila, j'ai créé un Thread qui envoie une fonction récursive (pour explorer des sous répertoires... Et puisque j'ai besoin de la taille des fichiers que je rencontre, j'utilise un TFileStream... Uniquement pour la taille...
    Est-ce qu'il faut mettre un Synchronize quelque part ou bien non? Parce que je n'ai pas très bien compris le principe de ce Synchronize...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      //Dans la fonction récursive du thread
      tf:=tfilestream.Create(FileName,fmopenread);
      Taille:=tf.Size;
      tf.Free;
    Merci d'avance

  2. #2
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    En fait le synchronize, tu dois le mettre quand tu fais apel a la vcl.

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Appel à la VCL? Ah bon...
    Seulement Synchronize n'accepte pas les fonctions avec paramètres... (Ex: Synchonize(MaFonction(var1,var2)) Le debugger dit que Synchronize n'accepte pas ce paramètre... Alors que les fonctions sans paramètres sont acceptées... Etrange...
    Ce qui fait donc que je ne peux pas utiliser Synchronize systématiquement...

  4. #4
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Mets tes variables en globales

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par lil_jam63
    Mets tes variables en globales
    ??? Ah... Là je vois pas ce que ça pourrait changer... Tu peux m'expliquer stp?

  6. #6
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Je me suis mal expliqué, en fait tu crée une procédure qui permettra de faire passerelle et tu apelles la procedure avec le synchronize qui elle fera apel a ta fonction
    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
     
    procedure toto;
    begin
    Synchonize(TaProcedure);
    end;
     
    procedure TaProcedure;
    begin
    ...
    TaFonction(var1, var2);
    ...
    end;
     
    function TaFonction (var toto: integer, tata: string);
    begin
    ...
    end;

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Tu peux aussi créer une classe de synchronisation :

    http://reisubar.developpez.com/idftpserver/indy_ftp.pdf

    voir page 22, "Synchronisations".

  8. #8
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    lil_jam63 : J'avais déjà essayé cette méthode mais j'ai laissé tomber parce que je trouvais que ça faisait trop bricolage... Mais bon, si c'est pas du bricolage, alors, ça va

    Reisubar : OK je vais regarder ça. Mais est-ce que dans ce cas, Synchronize est nécessaire?

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Synchronize est nécessaire?
    Toujours. C'est juste un enrobage plus "digeste" autour...

  10. #10
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    OK ben merci à tous!

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

Discussions similaires

  1. [VB Net] Thread synchrone ?
    Par pinson dans le forum VB.NET
    Réponses: 3
    Dernier message: 20/04/2007, 09h58
  2. [Thread]Synchronized
    Par soad dans le forum Concurrence et multi-thread
    Réponses: 15
    Dernier message: 10/10/2005, 21h16
  3. [Thread][synchronized] Pb d'executions simultanees d'une methode
    Par Higestromm dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 02/09/2005, 13h04
  4. [Thread][SYNCHRONIZED] problème de synchornisation
    Par _Eric_ dans le forum Général Java
    Réponses: 9
    Dernier message: 15/03/2005, 11h59
  5. [thread] synchronize ou pas ?
    Par dvarrel dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2004, 20h09

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