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

Delphi Discussion :

BeginInvoke (utiliser les threads)


Sujet :

Delphi

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 180
    Par défaut BeginInvoke (utiliser les threads)
    Bonjour,

    Je cherche comment appeler la méthode BeginInvoke en Delphi car en C# ok mais en delphi???

    D'avance merci

    Ben

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Par défaut
    Super, je ne connais pas le C#, et ça fait quoi BeginInvoke?
    Après on pourra t'aider

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 180
    Par défaut
    Ca permet de lancer un méthode de manière asynchrone à partir d'un Thread ce qui fait que l'on peut modifier des propriétés des controls d'une WinForm à partir d'un Thread ce qui n'est normalement pas possible.

    Voici un exemple
    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
     
    procedure principale();
    var
      thread1 : Thread;
    begin
      thread1 := Thread.Create(procThread);
      thread1.Start;
    end;
     
    procedure procThread();
    begin
      //Ici il est impossible de modifier les propriété de ma dataGrid
      //Par contre je peut modifier mes DataTable et autres variables
      Traitment_long_commande_sql_par_exemple;
     
      Self.BeginInvoke(proc_modif_propriete_de_ma_datagrid);
    end;
     
    procedure proc_modif_propriete_de_ma_datagrid();
    begin
      ma_datagrid.DataSource := MaDataSource;
    end;

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    c'est dans la FAQ Delphi : http://delphi.developpez.com/faq/?pa...creerthreadvcl

    regarde vers la fin, tu trouvera ce qu'il te faut : Synchronize

    Enfin si c'est bien ça que tu cherche ?

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 180
    Par défaut
    j'avais pas trop envie de créer un class thread juste pour exécuter une méthode de plus je ne suis pas sur que la méthode synchronise résoudra mon probleme... On sait modifier des controles du formulaire dans une méthode synchronisée?

  6. #6
    DMO
    DMO est déconnecté
    Membre chevronné
    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
    Par défaut
    Salut,

    Les propositions qui t'ont été faites me semblent impeccables, puisqu'elles répondent exactement à ta question. C'est bien Synchronize.

    Tu trouveras des tutoriaux très interessants pour comprendre sur DVP.

    Je te suggère aussi d'aller voir l'unité SyncObjs, qui contient de quoi synchroniser les threads entre eux.

    Faire un descendant de TThread, qui encapsule parfaitement la gestion d'un thread, est, je pense, ce qu'il faut faire, dans un parfait esprit orienté objet.

    Après fais en fonction de tes envies, tu peux aussi. N'oublies pas que
    tu peux aller voir les sources (déclaration comme implémentation) de TThread.

  7. #7
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Une solution moins élégante mais plus sure consiste à mettre à jour une variable de la form dédiée à la "modif_propriete_de_ma_datagrid", cette variableétant testée périodiquement par un timer.

Discussions similaires

  1. les exceptions en utilisant les threads
    Par mimi2403 dans le forum JBuilder
    Réponses: 7
    Dernier message: 09/05/2009, 09h36
  2. comment utiliser Les threads
    Par alaa_85 dans le forum VB.NET
    Réponses: 33
    Dernier message: 08/06/2007, 13h53
  3. Utiliser les threads pour les traitements long
    Par rach375 dans le forum Websphere
    Réponses: 3
    Dernier message: 14/11/2006, 12h08
  4. Utiliser les threads dans application Struts
    Par rach375 dans le forum Struts 1
    Réponses: 7
    Dernier message: 18/09/2006, 11h32
  5. Comment utiliser les Threads en VC++?
    Par mambo dans le forum MFC
    Réponses: 2
    Dernier message: 16/06/2006, 14h04

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