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 :

Thread: proposer plusieurs méthodes execute?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Par défaut Thread: proposer plusieurs méthodes execute?
    Bonjour,

    En consultant la FAQ et divers exemples fournis sur le web, j'ai remarqué (à chaque fois) que seule une méthode pouvait être appelée pour exécuter du code dans le thread (la méthode execute)

    Il se trouve que j'aimerais bien 'convertir' une de mes unité existante dans un thread, mais pour cela, il me faudrait plusieurs méthodes execute...

    Pour être plus précis, l'unité en question (celle à convertir) utilise un composant Indy (idHttp pour ne pas le citer). Plusieurs méthodes dans cette unité permettent de charger une page web et d'appliquer un traitement spécifique en fonction de l'adresse de cette page (il y atrop de différences entre les contenus opur synthétiser les traitements en une seule fonction):

    -> Appel fct charger page web n°1 -> appel fct traitement page web n°1
    -> Appel fct charger page web n°2 -> appel fct traitement page web n°2
    etc...

    Or, l'appel aux méthodes de ce composant Indy est bloquant (tant mieux, je ne veux pas faire de traitement tant que ma page web n'est pas chargée complètement, mais il est également bloquant pour tout ce qui est rafraichissement de mon interface (TTabSheet entre autre) ).

    Je voudrais donc utiliser un thread, mais qui disposerait d'une méthode execute_1, execute 2 etc...

    Je ne sais pas si cela est possible, et sinon, comment faire?

    Utiliser une structure case..of dans la méthode execute, mais puis-je surcharger la méthode execute?

    Utiliser, comme un bourrin, une variable globale (permet de ne pas modifier execute)?

    Bref, je patine un peu dans la semoule, et mes nombreuses recherches sur le net ne m'ont pas permis actuellement de trouver réponse à cette question!

    Donc si quelqu'un a des pistes de recherche à me proposer, je suis preneur!

    Merci

  2. #2
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Ben, il suffit, dans Execute, d'appeler l'une ou l'autre de tes méthodes en fonction d'un champ de la classe en question.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Par défaut
    Merci de répondre, ça fait plaisir de ne pas voir sombrer ce topic dans les oubliettes!!

    Bon, sinon, pour information, j'ai regardé l'exemple de thread de D7, et il semblerait que le type d'action à exécuter soit passé lors de la création du thread, pas lors de l'execute... Donc je me demande si je vais dans la bonne direction!

    je dois avouer que mes connaissances par rapport aux thread sont... comment dire... limitées!

    Donc si je comprends bien ce que tu dis sjrd, il faut, en gros, que je me créer une variable propre à ma classe, celle-ci permettant de charger telle ou telle page puis d'appeler la méthode de traitement correspondante?

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    ou bien dérive des threads avec un Execute spécifique d'un ancêtre commun qui aura les fonctionnalités communes
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Par défaut
    Citation Envoyé par tourlourou
    ou bien dérive des threads avec un Execute spécifique d'un ancêtre commun qui aura les fonctionnalités communes
    Et tu n'aurais pas un lien donnant un exemple stp? La FAQ delphi indique que Indy est fait pour être utilisé dans un thread, quand à trouver un exemple, c'est une autre paire de manches!

    Et j'ai beau chercher sur le net, je ne trouve que des exemples simples du cas de base sur les threads...

    bref, semoule, quand tu nous tiens!

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    ce que je voyais est calqué sur les objets, pour autant que ce soit possible (je suis nul en threads...) :

    soit un TTonThreadDeBase qui correspondrait à ton Unit actuelle, avec les procédures communes et une méthode Execute bidon ;

    tu ferais des TThreadDerives=class(TTonThreadDeBase) dont les méthodes Execute seraient spécifiques de chaque page à charger et traiter

    et donc, en fonction de la page et du traitement, c'est le programme qui lance tel ou tel type de thread
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/02/2012, 15h42
  2. Plusieurs formulaires dans un fichier avec plusieurs méthodes post
    Par cyberdevelopment dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2006, 15h04
  3. Comment proposer plusieurs designs aux visiteurs ?
    Par TheDoci dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 26/03/2006, 16h08
  4. [C#][Designer] Méthode executée dans property en DesignMode
    Par backseatgreg dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/01/2006, 11h00
  5. [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, 12h04

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