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

Element graphique dans une forum dans des theads spécifiques


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 115
    Points
    115
    Par défaut Element graphique dans une forum dans des theads spécifiques
    Bonjour,

    je viens de faire une recherche et je n'est pas trouvé de réponse, j'espère que ce sujet ne fera pas doublons et que ma vue ne m'a pas trahit !

    Ma question concerne les threads et les éléments graphiques dans une form.

    Voici mon problème (je vais essayer de faire simple hein)
    Imaginons une form avec deux RichTexTBox :
    -
    • Une qui affiche des données en lecture seul
    • Une ou l'on écris des messages

    Dans la première, les données sont issues d'un socket géré de manière asyncrone et qui joue avec Invoke pour afficher le texte.
    L'autre où l'on écris des données qui serons ensuite envoyé sur le socket. (dans un thread séparé)
    Jusque là, c'est bon sa fonctionne ^^

    Mon problème est le suivant, si je suis "floodé" en reception sur le socket, les invoke sur la richtextbox1 (celle d'affichage des données reçues) "bloque" le thread graphique et si j'écris en même temps dans ma richtextbox cela me "bloque".

    J'ai essayé de faire simple Ai-je réussit ?

    Concrètement, je veut savoir si je peut mettre chaque richtextbox dans un threads dédié et donc indépendant du thread principal ? (c'est p-e une connerie comme question !)
    Sinon, si vous avez des idées ^^

    Merci à vous !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Salut,

    non, helas, ce n'est pas possible. Pour passer outre, tu pourrais essayer de rassembler des paquets d'infos à passer en une invoke (ca ira bien plus vite que la meme quantités en invoke individuelle). Tu places une file qui recoit les infos du socket de reception, et sur timer, tu controles si cette file est non vide, et si oui, tu passes le tout en une invoke. Suivant l'interval du timer et la quantité d'infos, ca pourrait tout à fait convenir.

  3. #3
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 115
    Points
    115
    Par défaut
    Oui mais non
    C'est pour un client IRC donc du coup, si l'utilisateur fait un quizz ou autre il faut qu'il puisse lire le message le plus rapidement possible. (et aussi qu'il puisse écrire)

    Peut être dois-je orienter mes recherches sur les processus ?
    Je sais "vaguement" ce qu'est un thread mais sans visual studio il y a aussi une notion de processus qui semble être différente

    Je ne sais pas ce que cela cache...

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    moi je demande à voir un bout de code
    car un invoke pour changer une propriété text qui bloque un thread d'ui ... ca me parrait un peu gros

    sinon tu peux ptete créer un richtextbox non posé sur une feuille, qui lui serait accessible de tous les threads (ou alors qu'il soit créé par le thread carrément si ca pose toujours probleme)
    et quand t'as fini de traiter un arrivage sur le richtxtbox hors visuel, tu balances ca propriété text dans le vrai par un invoke
    car si tu ajoutes des trucs en plusieurs fois comme la couleur, ou plein de choses d'autres, ca sera plus rapide de le faire hors UI et dans ce cas tu n'auras plus qu'une opération de rendu dans la bascule

  5. #5
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 115
    Points
    115
    Par défaut
    J'ai cotre l'idée de te donner un bout de code, mais tous est relativement lié, donc celà risque d'être un peu chiant à découper.
    Je vais essayer de me repencher sérieusement sur le problème plus le temps passe et plus je me dit que des opérations que je fais après le invoke peuvent probablement être faites avant le invoke, ce qui réduiré le temps d'execution dans le threads graphique.
    Il faut que je repense le problème dans sa globalité, que je prenne un papier, un crayon et que je fasse des shèma de tous cela.

    Si je ne réussit pas je reviendrai vous voir et je mettrai une archives des sources sur un ftp.

    En attendant, partiel de java dans quelques jours, je vais arrêter le dotnet un peu

    Thanks !

  6. #6
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 115
    Points
    115
    Par défaut
    J'avais raison j'eccetué des boucles assez grosses dans mon thread graphique alors que je pouvais très bien les faires avant. Et du coup bah c'est niquel ^^

    Merci à ceux qui ont pris le temps de m'aider

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

Discussions similaires

  1. [Débutant] Afficher des messages dans une RichTextBox dans une FORM
    Par Poulki dans le forum C#
    Réponses: 1
    Dernier message: 12/05/2015, 10h19
  2. Réponses: 4
    Dernier message: 30/06/2010, 16h53
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Réponses: 1
    Dernier message: 18/04/2006, 12h24

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