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# Discussion :

Winform : Parallelisme => Interaction avec les composants graphiques


Sujet :

C#

  1. #21
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bonjour DonQuiche,

    Ouahou, que d'informations... Merci pour ce retour riche... Je n'ai pas encore tout completement absorbé, mais j'ai déjà quelques questions.

    1) Invoke: Surprenant, car de nombreux exemples sur la toile m'ont orientés sur cette méthode.
    En gros, si 2 Invoke sont fait sur un même controle depuis le même thread, il se bloque sans fin ? Il me semble que dans mon cas, ce sont tous des threads différents... C'est le principe de parallel, non ?

    3) Je n'ai pas trop compris... En gros, ca ressemble à un patern observable. Je connais les interfaces, mais je ne vois pas en quoi ça rendrait séquentiel les accès.

    Bonjour Pragmateek,
    Ca confirme donc que, comme l'avancait DonQuiche, de le lier au parent rend les threads dépendants.
    Merci pour ton bout de code, ça fonctionne chez moi.
    Mais c'est un peu nébuleux pour moi que d'ajouter une hiérarchie de thread fasse fonctionner le truc.

  2. #22
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 493
    Points
    5 493
    Par défaut
    1) Parallel.Invoke met le thread Ui en attente des ouvriers. Donc pendant ce temps-là la pompe à messages du thread UI ne tourne pas.
    Quant à Control.Invoke il place un message dans la file d'attente du thread Ui et attend son traitement. Et pendant ce temps le thread ouvrier est en pause.
    L'UI attend le thread ouvrier sans consulter ses messages, le thread ouvrier attend que l'UI réponde à son message.

    Ce n'est pas le fait que plusieurs threads veuillent tous consommer l'UI, ce qui ne pose aucun problème. C'est le fait que l'UI est occupée à attendre la fin de ces threads pendant que les threads attendent l'UI. C'est le principe même d'un dead lock: A attend B, B attend A.

    Parallel.Invoke est une bonne méthode quand on l'utilise pour ce pour quoi elle est faîte. Elle bloque le thread appelant ce qui est souvent un comportement désirable. Mais c'est problématique si ce thread est celui de l'UI. C'est comme blâmer Int32.Parse de ne pas retourner un double.

    3) Le but n'est pas de rendre séquentiel les accès, c'est de forcer la mise en évidence du découplage entre les actions UI, qui doivent être exécutées sur le thread UI, des autres actions exécutées sur le thread d'arrière-plan. La programmation parallèle est difficile, donc il est bon de structurer son code pour mettre en évidence qui fait quoi à quel endroit. Une fois que tu as bien séparé tu peux ensuite trouver des moyens de simplifier, par exemple en initialisant toutes tes barres de progression avant de lancer le moindre thread ouvrier.

  3. #23
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Merci à vous deux pour vos réponses rapides et pertinentes.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Gestion des transactions avec les composants DOA
    Par lper dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/12/2008, 17h06
  2. problème avec les composant graphique de gwt-ext
    Par ensienne2008 dans le forum GWT et Vaadin
    Réponses: 9
    Dernier message: 16/09/2008, 10h32
  3. Problème avec les pilotes graphique ATI
    Par vdumont dans le forum Matériel
    Réponses: 5
    Dernier message: 06/04/2006, 10h05
  4. Violation d'accès avec les composants Word 97/ 2000
    Par edechaux dans le forum Composants VCL
    Réponses: 3
    Dernier message: 07/03/2006, 10h48
  5. Réponses: 13
    Dernier message: 19/01/2006, 11h06

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