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 :

Thread dans une classe


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 11
    Points
    11
    Par défaut Thread dans une classe
    bonjour,

    voila mon probleme:
    Je dois passer un parametre a mon thread j'ai donc suivis la faq et je crée une classe contenant mon thread.

    a partir de là comment utiliser les autres élément (methode/attributs) de ma classe principale .? (a mon avis mettre en static n'est pas une bonne solution et de toute fassons je ne peux ^pas mettre en static les élément graphiques)

    je connais Invoke et les delegate mais cela ne semble pas marcher quand le thread est dans une classe appart.

    y'a t'il un moyen de passer un pointeur de class au thread en c# (solution sympa en c++) ?

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par superpok Voir le message
    y'a t'il un moyen de passer un pointeur de class au thread en c# (solution sympa en c++) ?
    Un pointeur est un delegue en C#

    Tu peux donc dans ta classe contenant tes parametres ajouter des délégués qui pourront être utilisés dans le thread
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  3. #3
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Tu peux également fournir à ta classe de thread une référence à ta classe principale, te permettant ainsi d'accéder aux méthodes sans tout mettre en statique, il faudra juste de l'invoke si ta classe principale est un contrôle (i.e. une classe dérivée de la classe Control).
    Pas de questions techniques par MP

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    oui merci de vos reponses,

    tout dabord dev01 , quand tu me dis de mettre des delegate dans ma classe thread comment les faire pointer sur des fonction de lautre classe ?
    (je pense ne pas bien comprendre ce que tu m'explique, si tu pouvais me faire un ptit exemple simple sa serait sympa)

    et quand StormimOn ecrit, passer une reference a ta classe thread.
    c'est la que je perds pied, quesqu'une reference ??
    car dans la FAQ on voit rapidement le mot clé ref mais

    si quelqu'un pouvait me montré un exemple concret et simple de passage de reference de classe a une autre classe.

    merci

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    En C#, on a que des références sur les objets donc je ne vois pas le problème.

    tu donnes ton formulaire en paramètre de ta classe thread et tu le stock dans un membre. Dans la threadFonction tu utilises les méthodes du formulaire que tu veux changer. Comme tu disais tu devras mettre les Invoke dans tes fonctions appellées si tu read/write les controls de ton formulaire puisqu'il faut être dans la thread du formulaire pour les changer.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    ha genial

    en fait, cette astuce avait été la premiere que j'avais tenté.
    mais en oubliant le "form2." devant mon invoke je recuperais une erreur etrange.
    et j'avais laissé tombé.

    voila qui me remet en scelle =D

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    Je ne suis pas sur de la façon dont tu as utilisé ton Invoke. Mais par précaution, je pense qu'il est mieu de rajouter l'Invoke dans les fonctions appellées de ta classe plutot que dans le thread (en testant invokeRequired et si necessaire elle s'invoke elle même). Je dis ça juste parceque c'est la manière conseillé par msdn. Le but de la manipulation étant de rendre thread-safe ton formulaire de lui même et non pas de faire en sorte que le thread rende thread-safe ton formulaire.

    source : thread-safe Form

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    ba c'est surtout plus propre car si demain il rajoute un autre thread avec un autre code il faudra encore qu'il le rende thread-safe... pas top comme méthode

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    lol exact, vous inquietez pas, je gere mon affaire :]

    dites j'ai posté la mais toujours aucune reopnse .
    http://www.developpez.net/forums/sho....php?p=2414490

    vraiment personne sait faire sa, ou si s'est possible?

Discussions similaires

  1. [Débutant] Cross Threading dans une class perso
    Par a.floranc dans le forum VB.NET
    Réponses: 2
    Dernier message: 20/08/2013, 13h01
  2. Thread dans une classe et copie
    Par Markand dans le forum SL & STL
    Réponses: 5
    Dernier message: 31/05/2013, 23h50
  3. Problème thread dans une autre classe
    Par Shypster dans le forum C#
    Réponses: 19
    Dernier message: 06/03/2008, 09h23
  4. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15
  5. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 07/03/2004, 18h16

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