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

Composants VCL Delphi Discussion :

ScrollBox et Threads


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Par défaut ScrollBox et Threads
    Bonjour à tous !

    Voilà j'ai un petit soucis : J'ai un Thread qui doit écrire dans une ScrollBox existante passée en paramètre.

    J'ai créé un composant de type TPanel et c'est celui ci que je veux ajouter à ma scrollBox.

    Le problème est quand je lance mon thread je vois mon panel qui s'ajoute dans ma ScrollBox mais tout se freeze juste après et plus rien ne répond.

    Si vous avez une idée d'où ça peut venir

    Merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 100
    Par défaut
    Un Thread qui modifie une ScrollBox, hum, c'est pas beau ça !
    Il faut savoir qu'un Thread ne doit pas interagir avec la VCL sans passer par un Synchronize ou un système de Liste d'Action ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Par défaut
    J'ai synchronisé mon thread et ça ne marche pas non plus.

    Pour faire simple en fait quand un thread se lance, je dois inscrire son nom dans cette scrollbox puis le retirer.

    J'ai donc une procédure "Afaire" avec mes instructions et la création d'un TPanel dans la ScrollBox. Et dans Execute de mon thread j'ai : Synchronize(Afaire);

    Quand je lance le thread l'objet Tpanel est créé dans ma scrollbox mais plus rien de répond apres cela.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 100
    Par défaut
    Pourquoi ne pas simplement lancer le "AFaire" dans le constructeur du Thread, qui lui est lancé dans le Thread principal ... et pour le retirer, tu peux le faire dans OnTerminate (qui est déjà synchronizé)...

    Après, qu'est-ce que contient ton "AFaire", si évidemment c'est une boucle, ...

    Quel est donc ton besoin fonctionnel ? Une solution sans Thread pourrait peut-être s'envisager !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Par défaut
    C'est un peu compliqué. En fait j'ai des procedures qui appellent des Webservices et me renvoient des fichiers XML. Mon but est de "tester" ces procédure pour savoir si les fichiers XML qu'elles renvoient soient corrects.

    Pour ce faire, je lance autant de thread que de procédures. A l'intérieur du "A faire" de chaque thread, il y a l'appel de la procedure et le test du fichier XML qui est renvoyé.

    Ce que j'aimerais, c'est qu'à chaque fois qu'un thread ce lance il créé un Tpanel dans ma scrollbox avec le nom du thread et le nombre d'erreurs rencontrées.
    - Thread 1 - 3 erreurs - Status : En cours...
    - Thread 2 - Aucune erreur - Status : Terminé

    etc... mais qu'il m'actualise les erreurs en temps réél

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 100
    Par défaut
    Evidemment si dans AFaire tu as mis le code à paralléliser et que l'utilise via Synchonize ... en fait, tu neutralise l'intéret du thread ... sépare donc le code qui ajoute la barre dans le panel et le code qui lance le WebService
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. ScrollBox
    Par Anonymous dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/12/2005, 09h17
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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