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

WinDev Discussion :

Gestion des threads [WD14]


Sujet :

WinDev

  1. #21
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Actuellement c'est très soleil, très chaud, très humide et il y a un risque d'orage fort pour ce soir (il est presque 15h ici).

    Le problème de la syntaxe des accolades c'est qu'il faut choisir une technique. Soit l'indirection en utilisant les accolades et en passant une chaîne (très pratique si plus d'une fenêtre utilise la même procédure pour gérer la jauge), soit l'accès direct (plus simple mais 1 seule jauge peut être gérée). Le plus simple serait donc d'enlever toutes accolades et d'appeler directement Articles.Jauge1.

    Pour le timer, ce n'est qu'une idée, mais c'est la meilleur solution pour un traitement qui ne devrait pas bloquer l'interface ou qui dit être annulable. Si l'application ne peut rien faire pendant ce temps, bloquer l'interface et faire bouger une jauge est suffisant.

    Si tu as une idée du nombre d'enregistrement que ta requête retourne, tu peux aussi utiliser HNbEnr avec le paramètre hNonBloquant afin d'afficher une jauge plus précise (et utile).
    «Un problème bien défini est un problème à moitié résolu.»

  2. #22
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour Klbsjpolp,

    J'ai tenté d'enlever les accolades, mais du coup j'ai un message d'erreur, il me souligne que je ne peut pas écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Articles.Jauge1,indChamp..BorneMin=0
    Ainsi que pour les autres lignes de la procédure.

    Et de fait, je reste avec le même code que j'ai communiqué plus haut en répondant à Tatayo

    Une petite question:

    Doit il y avoir un code dans le champ Jauge que j'ai inséré dans ma fenêtre Articles. ?

    Merci

    Bonne journée
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  3. #23
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Salut Raptor92,

    En fait il faut enlever le indchamp car c'est pour l'indirection avec les accolades.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"NomObjetEnChaine",ind<typeObjet>}
    Si tu utilises le nom du champ directement, ce n'est plus de l'indirection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Articles.Jauge1..BorneMin=0
    Le code la jauge peut être vide.

  4. #24
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour N_Ron,

    En effet, ta solution ne me donne plus d'erreur, pour autant, ma jauge ne fonctionne toujours pas.

    Je récapitule:

    Ca, c'est ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Req est une chaîne:"............................................."
    Articles.Jauge1..Visible=Vrai
    Articles..Etat=Inactif
    ThreadExécute("Thread1", threadNormal, ProcédureJauge,Articles.Jauge1)
    SI SQLExec(Requete,"REQ1") ALORS
    	SQLTable("REQ1",TABLE_ARTICLES)
     
    	FIN
    ThreadArrête("Thread1")
    Articles.Jauge1..Visible=Faux
    Articles..Etat=Actif
    Et ça, c'est ma procédure globale (j'avais au début mis la procédure en locale, mais tatayo m'a dit qu'elle devait être en globale)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    PROCEDURE ProcédureJauge(Jauge1 est une chaîne)
     
    SI ChampExiste(Articles.Jauge1) ALORS
    Articles.Jauge1..BorneMin=0
    Articles.Jauge1..BorneMax=1000
     
    BOUCLE
    	Articles.Jauge1++
    	MultitâcheRepeint(Articles) // Pour réafficher la fenêtre
    	ThreadPause(100) // Pause d'1/10ème de secondes
    	SI Articles.Jauge1=100 ALORS Articles.Jauge1=0
    A FAIRE TANTQUE Vrai
    FIN
    Lorsque je test, je vois bien que le champ jauge s'affiche et qu'il disparait à la fin de l'exécution de la requête, donc, je me dis que je suis sur la bonne voie, d'autant que je commence à comprendre le fonctionnement.

    Mais au point de comprendre pourquoi ma jauge n'avance pas

    En tout cas, déjà merci pour ton aide
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  5. #25
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Tu peux essayer de mettre un trace("ok") dans le thread pour voir si la condition champexiste(...) est vrai.

    Ensuite si tu utilises le nomFenetre.NomJauge tu n'as plus besoin de paramètre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    PROCEDURE ProcédureJauge()
     
    SI ChampExiste(Articles.Jauge1) ALORS
    Articles.Jauge1..BorneMin=0
    Articles.Jauge1..BorneMax=1000
     
    BOUCLE
    	Articles.Jauge1++
    	MultitâcheRepeint(Articles) // Pour réafficher la fenêtre
    	ThreadPause(100) // Pause d'1/10ème de secondes
    	SI Articles.Jauge1=100 ALORS Articles.Jauge1=0
    A FAIRE TANTQUE Vrai
    FIN
    Après ce n'est qu'un avis personnel mais ce qui génait était peut-être le nom du paramètre identique au nom de la jauge.

  6. #26
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Multitache ne fonctionne pas dans les threads

  7. #27
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Il n'est pas obligatoire dans ce cas le multitacherepeint non?
    C'est pas automatique pour les jauges?

    Sinon il y a FenRepeint(...)
    N_Ron

  8. #28
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour Vmolines,

    J'ai enlevé la commande, mais cela ne change rien

    Par avance merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  9. #29
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour N_Ron,

    J'ai inséré une trace, et j'ai une erreur

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Erreur à la ligne 4 du traitement Procédure globale ProcédureJauge.
    Le champ Articles.Jauge1 est inconnu.
     
    Informations techniques
     
    Projet : TRACKING_DATA_SYSTEME
     
    Dump de l'erreur du module <WD140VM.DLL> <14.00Gp>.
     
    - Appel WL :
    Traitement de <Procedures globales de TRACKING_DATA_SYSTEME.ProcédureJauge>, ligne <4>, thread <0>
     
    - Niveau : erreur fatale (EL_FATAL)
     
    - Code erreur : 1017
     
    - Code erreur WD55 : 0
     
    - Pas de code d'erreur système
     
    - Pas de message d'erreur système
     
    - Que s'est-il passé ?
    Le champ Articles.Jauge1 est inconnu.
     
    - Pas d'info de debug
     
    - Infos attachées :
    EIT_PILEWL :
    Procédure globale ProcédureJauge (Procedures globales de TRACKING_DATA_SYSTEME.ProcédureJauge), ligne 4
    EIT_COMPOSANT :
     
    EIT_DATEHEURE : 12/08/2009 15:31:07
     
    - Identifiant dans le .err : 1017
     
     
    Assistance
    Et en effet, je n'ai aucun résultat dans la trace.

    Pour autant, sommes nous d'accord:

    - Ma fenêtre s'appelle : Articles
    - Le champ jauge : Jauge1
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  10. #30
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Citation Envoyé par Raptor92 Voir le message
    Pour autant, sommes nous d'accord:

    - Ma fenêtre s'appelle : Articles
    - Le champ jauge : Jauge1
    Nous oui, mais apparemment Windev ne l'est pas . Pour en être sûr, dans l'init de la jauge:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    info(moimeme..nomcomplet)
    Et question subsidiaire: au lancement du thread, est-ce que la fenêtre Articles est ouverte ?

    Tatayo.

  11. #31
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Re bonjour Tatayo,

    J'adore le "Nous oui, mais pas Windev"

    Oui, en effet, ma fenêtre est ouverte.
    En fait, lorsque l'utilisateur ouvre la fenêtre de visualisation des articles, qu'il vois la jauge avancé, dû que cette requête est assez longue (+/- 150 000 articles)

    J'ai résolu le problème de l'erreur que j'ai mentionné lors de mon précedent message.

    Et à l'insertion de la commande dans l'init de la jauge, j'ai bien le nom du champ qui apparait dans un message au lancement : Articles.Jauge1
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  12. #32
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Rebonjour,

    Encore quelque petit problèmes, tu appels ThreadPause avec 100 comme arguments. Mais ThreadPause prend des centièmes de seconde et non pas des millièmes, ta boucle attend donc 1 seconde entre chaque, c'est donc un peu normal que tu ne vois pas l'avancement.

    Multitache ou MultitacheRepeint ne sont pas nécessaire pour les jauges, ce sont les seuls champs qui se repeignent seuls.

    Deux autres petites choses, ton paramètre est complètement inutile puisque tu utilises directement le champ. Il y a aussi une syntaxe plus simple pour faire une boucle infinie, BOUCLE FIN.
    «Un problème bien défini est un problème à moitié résolu.»

  13. #33
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Citation Envoyé par klbsjpolp Voir le message
    Rebonjour,

    Encore quelque petit problèmes, tu appels ThreadPause avec 100 comme arguments. Mais ThreadPause prend des centièmes de seconde et non pas des millièmes, ta boucle attend donc 1 seconde entre chaque, c'est donc un peu normal que tu ne vois pas l'avancement.

    Multitache ou MultitacheRepeint ne sont pas nécessaire pour les jauges, ce sont les seuls champs qui se repeignent seuls.

    Deux autres petites choses, ton paramètre est complètement inutile puisque tu utilises directement le champ. Il y a aussi une syntaxe plus simple pour faire une boucle infinie, BOUCLE FIN.

    Bonjour,

    En effet, une erreur de frappe, je l'ai remis à 10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PROCEDURE ProcédureJauge()
    SI EnModeTest() ALORS Trace("Vérification de l existance du champ - ", ChampExiste("Articles.Jauge1"))
    SI ChampExiste("Articles.Jauge1") ALORS
    Articles.Jauge1..BorneMin=1
    Articles.Jauge1..BorneMax=100
    FIN
    BOUCLE
    	Articles.Jauge1++
    	ThreadPause(10) // Pause d'1/10ème de secondes
    	SI Articles.Jauge1=100 ALORS Articles.Jauge1=0
    A FAIRE TANTQUE Vrai
    Alors:

    - Lorsque je test si le champ existe, il m'indique 1, donc je part du principe que oui.

    - Pourtant, et je crois avoir compris le principe:

    J'ai déclaré les bornes Mini et maxi
    Le thread fait une pose
    Et chaque fois que la jauge (est censée) arrive à 100, elle retourne à 0
    Et cela tant que ma requête tourne.

    Et du coté de la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Articles.Jauge1..Visible=Vrai
    Articles..Etat=Inactif
    ThreadExécute("Thread1", threadNormal, ProcédureJauge)
    SI SQLExec(Requete,"REQ1") ALORS
    	SQLTable("REQ1",TABLE_ARTICLES)
     
    	FIN
    ThreadArrête("Thread1")
    Articles.Jauge1..Visible=Faux
    Articles..Etat=Actif
    -Je fais apparaitre la jauge à l'ouverture de la fenêtre
    - Le thread demarre
    -Après la requête, le thread s'arrette
    - Et la jauge disparait

    Mais je ne vois pas ou est mon erreur

    Désolé de persévéré, mais si je n'arrive pas à maitriser celui là, je n'arriverais pas à comprendre le fonctionnement qui est très intéressant

    PS: Comme toi, nous avons la chance d'avoir un super temps, mais pas d'orage en vue
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  14. #34
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Salut,

    Je ne vois pas, mais tu peux essayer d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Temporisation(100,tempoSourisEtClavier)
    tempoSourisEtClavier:
    Les champs et les fenêtres peuvent être redessinés.
    Les timers peuvent être exécutés.
    Les actions souris (clic sur les champs par exemple) ou les événements clavier peuvent être exécutés.
    à la place du threadpause:
    Il est conseillé d'utiliser la fonction ThreadPause à la place des fonctions Multitâche ou Temporisation lorsque plusieurs threads sont utilisés (y compris pour le thread principal de l'application) si la temporisation n'a pas besoin de traiter les actions de l'utilisateur.
    Je t'avouerai ne pas être trop convaincu moi même par ce que je viens de dire mais ça prend 30sec pour être fixé.

    Bonne journée à tous,

    N_Ron

  15. #35
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour à Tous et à N_Ron,

    J'avoue que ça ce complique

    J'ai inséré plusieurs trace afin de voir comment ce comporte la procédure.
    Et en fait, seul la trace de "SI ChampExist" me donne le résultat = 1

    Toutes les autres restent muettes, à croire qu'il ne détecte rien de la borne mini et maxi et qu'il ne fait pas la boucle

    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
    PROCEDURE ProcédureJauge()
     
    SI EnModeTest() ALORS Trace("Vérification de l existance du champ - ", ChampExiste("Articles.Jauge1"))
    SI ChampExiste("Articles.Jauge1") ALORS
    	Trace(Articles.Jauge1)
    	Trace("BorneMini", Articles.Jauge1..BorneMin=1)
    	Articles.Jauge1..BorneMin=1
    	Trace("BorneMaxi", Articles.Jauge1..BorneMax=100)
    	Articles.Jauge1..BorneMax=100
     
    FIN
    BOUCLE
     
    	Trace("toto")
    	Articles.Jauge1++
    	ThreadPause(10) // Pause d'1/10ème de secondes
    	SI Articles.Jauge1=100 ALORS Articles.Jauge1=0
    A FAIRE TANTQUE Vrai
    J'ai pensé mettre la trace "TOTO" pour voir combien de fois la trouve il, mais sans résultat.

    Pour N_Ron: La temporisation ne donne rien (après test bien sur)

    Par cette belle journée, par avance merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  16. #36
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    C'est vraiment bizarre!
    Si tu ne laisses que la boucle avec les trace dans la procédure as-tu quelque chose?

    Sinon tu peux peut-être copier ton code et refaire la procédure ou recréer la jauge.
    J'ai déjà été bloqué plusieurs fois plusieurs jours avant de me rendre compte que ll'objet ou la procédure était corrompu.
    Juste recréer et recopier le code est cela fonctionné.

    Mais je pense que le mieux que tu es à faire est de mettre un point d'arrêt de déboguer la proc pas à pas avec F7.

    N_Ron

  17. #37
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bon Après midi tout le monde,

    Et bien, comme je suis tenace, et que j'aurais dû mieux écouter Guardian, j'ai trouvé un composant qui traite des threads .

    Et le plus drôle, c'est qu'il s'appelle "Les threads", comme quoi, si les ânes volaient, je serais vraisemblablement chef d'escadrille...........

    Ceci mis à part, ma jauge (ou devrais je dire cauchemar) tourne maintenant comme il faut........sauf qu'elle a la bonne idée de tourner après l'exécution de ma requête.

    Alors:

    Pour la procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PROCEDURE ProcédureJauge()
    i est un entier
    POUR i=0 A 100
    	Articles.Jauge1=i
    	ThreadPause(10) // Pause d'1/10ème de secondes
    	FIN
    J'ai tenté de remplacer ThreadPause par Temporisation, mais cela n'a pas d'importance, car la différence se limite au fait que dans le cas de la temporisation, cela bloque les boutons de la fenêtre le temps de l'avancement de la jauge

    Pour la requête:

    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
    //LISTE DES ARTICLES
    Articles.Jauge1..Visible=Vrai
    Articles..Etat=Inactif
    Requete est une chaîne="SELECT ART_NOMAPPEL, ART_LIBRE1, ART_CODIM1, ART_CODIM2, ART_CODE, ART_CODEBARRE, ART_MARQUE, ART_COLLECTION, "+...
    "ART_FOURUVC, ART_LIBRENUM1, ART_LIBRENUM2, ART_LIBRENUM3, ART_LIBRENUM4, ART_NOM FROM ARTICLES "+...
    " GROUP BY ART_NOMAPPEL, ART_LIBRE1, ART_CODIM1, ART_CODIM2, ART_CODE, ART_CODEBARRE, ART_MARQUE, ART_COLLECTION, "+...
    "ART_FOURUVC, ART_LIBRENUM1, ART_LIBRENUM2, ART_LIBRENUM3, ART_LIBRENUM4, ART_NOM ORDER BY ART_NOMAPPEL, ART_CODIM1, ART_CODIM2 ASC  "
    SI EnModeTest() ALORS Trace(Requete)
     ThreadExécute("monthread1",threadNormal,"ProcédureJauge")	
    SI SQLExec(Requete,"REQ1") ALORS
      	SQLTable("REQ1",TABLE_ARTICLES)
     
    	FIN	
    Articles..Etat=Actif
    //Articles.Jauge1..Visible=Faux
    La commande "ThreadArrete" est placée dans le code de "Fermeture de la fenêtre"

    Je pense ne pas être loin, sauf que pas très loin est encore de trop...

    A ce stade, votre avis éclairé serait une bénédiction

    Par avance merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  18. #38
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Re...........

    Je pense avoir trouvé d'où vient le problème, même si je ne sais pas le résoudre:

    Je me suis créé une fenêtre test dans laquelle j'ai inséré un champ jauge avec la procédure mais SANS ma requête des articles.

    Et cela fonctionne impeccable.

    Mais dés que je met ma requête, la jauge ne démarre qu'après.

    Ce qui m'amène à vous demander si quelqu'un saurait pourquoi, car mon thread est censé fonctionner en parallèle à ma requête.

    Bonne AM
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  19. #39
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Je peux me tromper mais je crois que c'est le Thread principale (ton programme) qui gère l'affichage de la fenêtre donc si ton thread principale se bloque pendant l'exécution de la requête, l'affichage se bloque aussi..

    Je pense qu'il vaux mieux que tu exécute ta requête dans le thread secondaire.

    en gros tu déclare REQ1 en tant que variable globale au projet.
    tu lance l'affichage de ta jauge,
    tu exécute ta requête dans un thread
    et avec un threadAttend dans ton thread principale tu attend la fin de l'exécution de la requête.
    puis tu stop ta jauge
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  20. #40
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour Mail.Spam,

    Si je comprends bien:

    Dans le code de déclaration globale du projet:

    REQ1 est une chaîne
    Et à cet endroit, j'insère un threadAttend pour lui signaler d'attendre la fin de ma requête.

    Dans le code de déclaration de ma fenêtre, je lance ma jauge
    Et je remplace la jauge actuellement dans le thread par la requête
    Et ensuite, j'arrête la jauge

    Peut tu me confirmer si j'ai compris le principe, après je tente

    Merci beaucoup de ton aide
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. gestion des threads
    Par yanis97 dans le forum Langage
    Réponses: 6
    Dernier message: 20/04/2006, 12h41
  2. Gestion des Threads
    Par Nalfouille dans le forum MFC
    Réponses: 3
    Dernier message: 05/04/2006, 16h29
  3. Gestion des threads
    Par yanis97 dans le forum C++
    Réponses: 6
    Dernier message: 08/03/2006, 09h39
  4. GEstion des thread
    Par Julien Dufour dans le forum Access
    Réponses: 8
    Dernier message: 06/10/2004, 14h28
  5. [reseaux] Gestion des threads en perl
    Par totox17 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 28/11/2002, 09h40

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