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 :

HTTPJauge - fenêtre Ne répond plus


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 365
    Points : 176
    Points
    176
    Par défaut HTTPJauge - fenêtre Ne répond plus
    Bonjour,
    comme je n'arrivais pas à mettre en place la mise à jour de mon application via live update http, j'ai décidé de développer moi même ce module.

    Voici le code que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HTTPDestination(MonRépertoire+"\INSTALL.EXE")
    HTTPJauge(JAUGE_Progression,10000)
    SI HTTPRequete("http://MonServeur/Chemin/INSTALL.EXE") ALORS
        LanceAppli(MonRépertoire+"\INSTALLEXE")
        FinProgramme()
    FIN
    Ce code est utilisé dans l'initialisation d'une fenêtre qui possède un champ JAUGE. Ce code fonctionne, je télécharge bien mon exécutable et le lance une fois le téléchargement terminé.
    Le problème est que si l'utilisateur clique sur la fenêtre pendant le téléchargement, elle passe en état "Ne répond plus" et la jauge ne se rempli plus bien que le téléchargement continue.

    Comment je peux faire pour que ma fenêtre soit toujours active et qu'elle ne passe pas en "Ne répond plus".

    Je vous remercie
    Qui vit par le Troll périra par le Troll!

  2. #2
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut
    Il faut alterner les traitements entre thread et thread principal.

    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
     
     
    // Dans le code de ta fenetre 
    ThreadExécute("ThreadDL",threadNormal,ProcedureTelechargement)
     
    BOUCLE
    	SI ThreadEtat("ThreadDL") = threadInexistant ALORS
    		SORTIR
    	FIN
    	Multitâche(-1)
    FIN
     
    SI fFichierExiste(MonRépertoire+"\INSTALL.EXE") ALORS
        // Traitement pour lancer la MAJ    <------------- Edit 
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Ta procédure de téléchargement (executée dans un thread)
    PROCEDURE ProcedureTelechargement()
         HTTPDestination(MonRépertoire+"\INSTALL.EXE")
         HTTPJauge("ProcedureActualisationJauge")
         SI HTTPRequête("http://MonServeur/Chemin/INSTALL.EXE") ALORS
              HTTPDonneRésultat()
         FIN
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Procédure qui actualise la jauge
    PROCEDURE ProcedureActualisationJauge(eNbTotal est un entier, eNbRecu est un entier)
    	PROCEDURE INTERNE AffichageJauge(eNbTotalOctet est un entier, eNbRecuOctet est un entier)
    		JAUGE_Progression = Val(eNbRecuOctet * 100 / eNbTotalOctet)		
    		Multitâche(-1)
    	FIN
     
    	ExécuteThreadPrincipal(AffichageJauge,eNbTotal,eNbRecu)
    FIN
    Google est ton ami !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 365
    Points : 176
    Points
    176
    Par défaut
    Je te remercie, je teste ça tout de suite
    Qui vit par le Troll périra par le Troll!

  4. #4
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut
    Par contre je te conseille de mettre un garde de fou dans la boucle afin de sortir et afficher un message d'échec de téléchargement si besoin. Pour cela tu peux actualiser une variable globale à la fenêtre de type DateHeure (<section critique>) dans la procédure d'actualisation de la jauge. et dans ta boucle comparer la variable dateHeure à la dateHeure système. Si pas d'actualisation en xx Min c'est qu'il y a un problème donc on sort, on kill le thread (Oo), et on affiche un message d'erreur.
    Google est ton ami !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 365
    Points : 176
    Points
    176
    Par défaut
    Bonjour,
    désolé pour la réponse tardive.

    J'ai commencer à mettre en place ta solution mais je rencontre un problème, les procédures internes ne sont pas disponibles en windev 15 (seulement à partir de la 20).

    Est-ce qu'il y aurait la possibilité de faire sans les procédures internes?

    Je te remercie

    edit:
    en fait, j'ai juste retiré la procédure interne et j'ai placé le code dans la procédure d'actualisation de la jauge ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PROCEDURE ProcedureActualisationJauge(nNbTotal est un entier, nNbRecu est un entier)
        JAUGE_Progression = val(nNbRecu * 100 / nNbTotal)
        multitâche(-1)
    et ça fonctionne.
    Il ne me reste plus qu'à rajouter des indications dans ma fenêtre (taille totale du fichier, taille téléchargée et pourcentage) et ma fenêtre sera bonne mais ça ne devrait pas poser problème.

    Je te remercie
    Qui vit par le Troll périra par le Troll!

Discussions similaires

  1. [Eclipse plantage]ne répond plus
    Par agougeon dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/05/2006, 14h24
  2. Table qui ne répond plus, toutes operations impossible
    Par imer5 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/05/2006, 16h26
  3. MySQL ne répond plus ...
    Par Ickou dans le forum Outils
    Réponses: 19
    Dernier message: 10/05/2006, 18h01
  4. Programme ne répond plus.
    Par twizell dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 14/11/2005, 19h46
  5. Le dataset.bof ne répond plus.
    Par fplanglois dans le forum Bases de données
    Réponses: 6
    Dernier message: 23/03/2004, 09h45

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