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++/CLI Discussion :

Mettre à jour mon interface durant de longs calculs


Sujet :

C++/CLI

  1. #1
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut Mettre à jour mon interface durant de longs calculs
    Bonjour,

    De manière générale, comment est-il possible de mettre à jour l'interface d'un logiciel et ce lors d'un calcul lourd de celui-ci? Je m'explique:

    Lors d'une longue procédure, j'appelle plusieurs fonctions qui changent les valeurs de certains de mes composants... Le problème est que mon processeur est tellement occupé que ceux-ci ne se mettent pas à jour. J'ai alors opté pour un composant->Update (car Invalidate n'a pas l'air de fonctionner...).

    Je suppose qu'il doit exister un autre moyen via des Invokes notamment...

    Merci!
    Rodrigue

  2. #2
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2005
    Messages : 391
    Points : 301
    Points
    301
    Par défaut
    il faut que tu lance ton traitement dans un thread
    et tu utilises des delegate pour mettre a jour ton appli

  3. #3
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Sinon tu peux forcer une form à se redessiner en appelant une de ses méthodes dont je me souviens pas le nom de tête.
    Mais en règle général, c'est bien de faire les gros traitements dans des threads à part.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par _skip Voir le message
    Sinon tu peux forcer une form à se redessiner en appelant une de ses méthodes dont je me souviens pas le nom de tête.
    Application.DoEvents()

    Mais en effet, il est conseillé de passer par un Thread à part (ou un BackgroundWorker)

  5. #5
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut
    Je mets déjà mon interface à jour via des "delegate" mais si j'appelle ceux-ci depuis un thread, il va falloir que je fasse des MethodInvoker etc. En csharp, c'est facile de faire un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... new MethodInvoker(delegate { mafonction(params..);});
    Mais en C++/CLI, à ma connaissance, il n'existe pas de forme équivalente à .

    Pour que mon application soit threadsafe, il faudrait que dans chacune des fonctions où je mets des composants de mon interface à jour, je fasse un test sur InvokeRequired? C'est quand même lourd...
    Rodrigue

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu aurais du précisé (ou poster dans le bon forum) que tu es en C++/CLI


    Je déplace

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Thomas, c'est pas le bon forum

    tu peux regarder dans la faq C++/CLI http://dotnet.developpez.com/faq/cpp...trolFromThread

  8. #8
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut
    Merci, je vais aller voir
    Rodrigue

Discussions similaires

  1. [AC-2003] Impossible de mettre à jour mon mdw
    Par minot83 dans le forum Sécurité
    Réponses: 1
    Dernier message: 07/04/2011, 11h03
  2. Comment mettre à jour mon Gridview
    Par bipbip2006 dans le forum ASP.NET
    Réponses: 16
    Dernier message: 20/09/2010, 16h50
  3. Réponses: 3
    Dernier message: 17/04/2010, 14h56
  4. Mettre à jour mon modalPopupExtender
    Par processus dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/03/2010, 12h42
  5. Réponses: 11
    Dernier message: 11/10/2009, 05h23

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