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

Windows Presentation Foundation Discussion :

[Multithreading] Comment l'implémenter correctement ?


Sujet :

Windows Presentation Foundation

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut [Multithreading] Comment l'implémenter correctement ?
    Bonjour,

    J'ai chercher de partout un tutorial qui explique quel composants, classes, utilisé pour faire du multithreading avec wpf.

    Je n'ai rien trouver de potable. Rien qui explique bien comment faire pour interagir avec une interface wpf dans des threads séparés.

    Est-ce que quelqu'un connait un site, un exemple ou un tutorial sur ce sujet?

    Cordialement

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut
    Merci beaucoup! C'est très explicite

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    une info quand meme pour le multithreading
    ne jamais oublier de mettre le isbackground de ton thread a true sinon si tu as oublié d'arreter ton thread avant de fermer ton appli, ton appli ne se ferme pas avec le isbackground a true elle se ferme et tue le thread

    et important
    ne jamais oublier de decoupler les messages avec un le application dispatcher ou le dispatcher de ta fenetre ca si tu met en place des message et du bionding sur l'inteface graphique y'a des chances que ca plante si c'est pas decouplé

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Par défaut
    J'ai vu quelque chose qui m'intéresse !

    Citation Envoyé par Ikeas
    et important
    ne jamais oublier de decoupler les messages avec un le application dispatcher ou le dispatcher de ta fenetre ca si tu met en place des message et du bionding sur l'inteface graphique y'a des chances que ca plante si c'est pas decouplé
    En fait je ne sais pas trop de quoi tu parles, mais depuis peu, j'ai cette erreur qui arrive (mais pas tout le temps :s) :

    Le CLR n'a pas pu effectuer de transition du contexte COM 0x1fa838 au contexte COM 0x1fa9a8 pendant 60 secondes. Le thread qui possède le contexte/cloisonnement de destination est probablement en train d'attendre ou de traiter une opération très longue sans pompage des messages Windows. Cette situation a généralement des effets négatifs sur les performances et peut parfois entraîner le blocage de l'application ou une utilisation ininterrompue de la mémoire. Pour éviter ce problème, tous les threads STA (Single Threaded Apartment) doivent utiliser des primitives d'attente de pompage (par exemple CoWaitForMultipleHandles) et pomper de manière régulière les messages lors des opérations qui sont longues à s'exécuter.
    Je me demande si c'est lié à ce que tu viens de décrire, et si oui, où est ce que je pourrais trouver plus d'informations ?
    Merci beaucoup

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    je ne sais pas, car en general quand tu as un probleme avec COM c'est que tu utilise des elements systeme mais plutot dans le systeme XP sur des composants en mode non manager mais bon

    je te conseil quand mem de decoupler,
    un petit exemple imaginons un thread
    (je te fais le code en directe il y aura donc des problemes avec les majuscules)

    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
     
    public class macclass
    {
       public event eventhandler monevent;
       public void mathreadfocntion()
       {
          thread x = new thread(nes threadstart(toto));
          x.isbackgroung = true;
          x.start();
       }
       public void toto()
       {
          int i = 0;
          while((++i) < 20)
          {
             thread.sleep(1000); // attent une seconde
             if(monevent != null)
                monevent(this,eventargs.empty);
     
          }
       }
    avec ce code la il peut y avoir un probleme de lancement de l'event vers une classe de ce type notamement quand tu as un element de binding dans les traitement du message ou simplement un acces a un element graphique

    par exemple


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    maclass x = new maclasse();
    x.monevent += new eventhandler(titi);
    x.mathreadfonction();
     
    public void titi(object sender, eventargs e)
    {
       this.textbox1.text = "tata";
    }
    la ca ne focntionnera pas il faut decoupler les messages
    et le mieux structurelement c'est de la faire dans le lancement du message dans la classe maclasse

    avec un dispatcher sur application.current

    si tu veux je mettrait cet exemple au propre et je le ferrais sous vs pour que ce soit plus simple (demain sans doute)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/07/2006, 15h07
  2. [MultiThread] Comment ça marche ?
    Par jaguar74 dans le forum Langage
    Réponses: 1
    Dernier message: 04/01/2006, 15h23
  3. Comment me connecter correctement ?
    Par tonymontana4192 dans le forum Informix
    Réponses: 7
    Dernier message: 16/12/2005, 06h38
  4. [CR] Où l'obtenir et comment l'implémenter ?
    Par marvelromy dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 04/08/2004, 14h52
  5. Moteur physique : comment l'implémenter ?
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 17/12/2003, 12h56

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