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

C++Builder Discussion :

Application sous Windows 7 en not responding


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut Application sous Windows 7 en not responding
    Bonjour à toutes et à tous,

    Dans une de nos applications, nous devons lire des volumes de données d'environ 5Go. Sur les ordinateur équipées de Windows XP, la barre de progression évolue correctement. Par contre, avec les ordinateurs équipés de Windows 7, la même application avec le même volume de données, dans les mêmes conditions, le fameux message "ne répond pas" arrive très vite dans la barre de progression.

    J'ai trouvé cela sur le net http://stackoverflow.com/questions/6...ws-7-wm-update

    Quelqu'un a déjà eu ce genre de petit souci ?

    Merci par avance,

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    et en compatibilité xp ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Je n'ai pas testé en mode compatibilité XP ... mais bon, je ne préfère pas exécuter l'application comme cela, je préfère trouver une solution.
    Dois-je créer un thread particulier; qui appelle ma fenêtre avec la barre de progression?

    Merci pour vos conseils si vous avez déjà eu ce cas,

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Effectivement, je viens de faire un test, et si j'exécute l'application en mode de compatibilité Windows XP SP3, je n'ai pas ce souci ...

    A suivre ... car j'aimerais que cela fasse la même chose sans activer le mode de compatibilité.

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 621
    Points : 25 321
    Points
    25 321
    Par défaut
    La ProgressBar est l'un des rarement composant a s'actualiser même sans traitement des messages
    Contrairement au Label ou Memo

    Ajoute dans ta boucle, toute les 1000 itérations, un appel à Application->ProcessMessages() si tu ton traitement tourne dans le Main Thread
    1000 est un nombre arbitraire, j'utilisais pour ma part, un QueryPerformanceCounter (TChronometer) pour appeler cela toutes les demi-secondes

    C'est un délai tout à fait satisfaisait

    Si c'est un thread secondaire, tu as peut-être mal goupillé tes signaux entre tes threads provoquant un blocage sur une machine plus puissante sou Seven par rapport à la vieille en XP

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut
    Merci ShaiLeTroll pour les infos.

    J'ai implémenté l'appel à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->ProcessMessages()
    via un contrôle TTimer; malheuseusement, cela ne résoud pas le souci.
    Je me demande si je ne vais pas devoir implémenter un objet thread ...

    A suivre ...

  7. #7
    Membre actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Points : 245
    Points
    245
    Par défaut
    Citation Envoyé par Mercusyo Voir le message
    Merci ShaiLeTroll pour les infos.
    Je me demande si je ne vais pas devoir implémenter un objet thread ...
    Perso l'objet thread c'est ce que je fais systématiquement quand j'ai un GUI (Interface Homme Machine) d'avancement à modifier avec un traitement lourd à effectuer en tache de fond ( style installeur logiciel ).
    Une petite variable appartenant à ton objet thread que le GUI vient lire sur interruption TTimer pour mettre à jour la barre d'avancement, c'est nickel et ça marche tout OS confondu.

    N'oublie pas d'ajouter tout de même un peu de Sleep pour redonner la main à ton appli principale ou de modifier la priorité de ta tache de traitement en fonction de ce que tu veux faire.

    En procédant comme ça on a installé sur plus de 80 machines différentes, on a eu aucun problème ( du XP du 7 du 8 et même du vista ).

    Par contre pour la ProgressBar j'ai laissé tombé, son comportement est différent suivant les ordinateurs ( barre en vert devient orange ?? ), objet passe en avant plan par rapport à un TImage ou non suivant l'OS etc.

    Bref utilise plutot deux TImages, une barre vide une barre complete positionnées l'une sur l'autre et modifie Image2->Width en fonction de l'avancement, tu pourras en plus comme ça donner un super effet graphique

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 621
    Points : 25 321
    Points
    25 321
    Par défaut
    Citation Envoyé par Mercusyo Voir le message
    J'ai implémenté l'appel à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->ProcessMessages()
    via un contrôle TTimer;
    Euh c'est logique !
    Puisque sans ProcessMessages pas de WM_TIMER

    tu n'as pas compris mes propos
    Tu dois le mettre dans ta boucle pas ailleurs

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut
    Merci Argol_Medusa et ShaiLeTroll pour votre retour d'expérience.

    Euh oui ShaiLeTroll, effectivement, je n'avais pas compris ton précédent post, désolé

    Je vais tester les 2 solutions proposées,

    Encore merci !

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

Discussions similaires

  1. Application sous Windows CE
    Par Fbartolo dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/03/2009, 11h03
  2. installation Glassfish pour déploiement d'application sous windows
    Par psycho_xn dans le forum Glassfish et Payara
    Réponses: 3
    Dernier message: 07/11/2008, 17h05
  3. Peut on acceder à une image d'une autre application sous windows?
    Par pointer dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 19/04/2006, 12h17
  4. Controle d'applications sous Windows
    Par BNS dans le forum Windows
    Réponses: 2
    Dernier message: 07/04/2006, 13h59
  5. Liste des programme ou applications sous windows xp
    Par bob40 dans le forum Windows XP
    Réponses: 1
    Dernier message: 12/01/2006, 02h14

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