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 :

Problème avec un thread (débutant en thread)?


Sujet :

C#

  1. #1
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut Problème avec un thread (débutant en thread)?
    Bonjour...

    Voila mon problème...
    Je souhaite réaliser un programme qui avec des périphériques génére un signal carré rapide (fréquence importante). Et en plus de ca j'ai une form qui comprend un tabSheet et plein de composant. Je me suis appercu que lorsque je change d'onglet (donc que je redessine ma form) mon signal carré généré n'était plus a la bonne fréquence (le temps pris pour redessiner ma form influencé mon signal --> normal).
    J'ai don mis ma génération de signal carré dans un thread (atention je débute avec ca ) .
    voila ce que j'ai dans le Load de ma form:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            ThreadStart monThread = new ThreadStart(threadEmission.ThreadSend);
                Thread leThread = new Thread(monThread);
                leThread.Priority = ThreadPriority.Highest;
                leThread.Start();

    Le problème c'ewst que je vois pas de différence. Mon thread est encore influencé par mon projet (le redessin de ma form)...

    Quelqu'un peut il m'aider??

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 476
    Points
    20 476
    Par défaut
    Comment est démarré le processus ? Il faut le placer dans une classe indépendante la plus indépendante des forms sinon comme tu le constateras rien ne sera synchrone.

  3. #3
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    Ben le thread est déja dans une classe... et je ne vois pas en quoi cela peut résoudre mon problème--> pourquoi lorsque j'ai un thread qui générere des impulsion celui ci se trouve pertubé par mon appli

  4. #4
    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 Jayceblaster
    Ben le thread est déja dans une classe... et je ne vois pas en quoi cela peut résoudre mon problème--> pourquoi lorsque j'ai un thread qui générere des impulsion celui ci se trouve pertubé par mon appli
    Hum, c'est très bonne question.

    Ce que je vais dire est à vérifier :

    Il me semble que lorsque .NET gère les threads il les gere à l'intérieur du domaine d'application. C'est a dire que les priorités sont affectés par rapport aux autres thread de ton exécutable (pour faire simple), ce qui n'empeche pas le système d'exploitation de passer la main au reste des applications qui tournent et cela sans tenir compte de la priorité de ton thread.

    Si tu veux avoir une chance de passer outre, je te conseil d'essayer d'isoler ton générateur de fréquence dans un autre exé, que tu lanceras avec une haute priorité.

    Maintenant ce n'est peut être pas ça du tout ... .

    As tu dans ta form quelque chose qui provient du thread ? genre tu fait une demande d'information au thread afin de remplir des compos ?

  5. #5
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    ben en fait peux pas trop isolé mon générateur de signal dans un exe car, si pour le moment ma form ne comunique pas avec mon thread, ca va être le cas dans mon appli finale...

    J'y comprend absolument rien a cette histoire de thread --> je voyais pourtant cette méthode comme un moyen miracle pour résoudre mais problèmes de timing --> isolé ma Form de toute les communication avec les périphérique de mon pc aurait dçu me permettre de rendre mon logiciel "indépendant" de mes routines d'acquisition.

  6. #6
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 476
    Points
    20 476
    Par défaut
    Tu peux lancer un thread et à intervalles réguliers l'interroger grace à un timer.
    Sinon les EVENT permettent de recevoir une notification du Thread

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 206
    Points : 149
    Points
    149
    Par défaut
    Je ne sais pas si tu as résolu ton problème, mais par curiosité, ton signal, tu en prends connaissance comment ? Il s'enregistre dans un stream, un fichier, il s'affiche quelque part ?

  8. #8
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    non je n'ai pas encore résolu mon problème et mon signal s'affiche sur un oscilloscope...

  9. #9
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    Bonsoir,

    as-tu essayé de visualiser l'identifiant de chaque thread, celui de ta form, celui de ta classe dans lequel est généré ton signal :

    System.Threading.Thread.CurrentThread.ManagedThreadId
    pour t'assurer que ce soit bien deux threads différents ?

    Merci d'avance.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 206
    Points : 149
    Points
    149
    Par défaut
    Mon savoir sr les threads est encore trop théorique pour que je puisse t'aider. Mais une chose m'intrigue. le nom "threadEmission" peut laisser penser qu'il y a une autre classe thread, mais je suppose que ce n'est pas le cas ? threadEmission est une classe "normale", pas une descendante des classes de thread ?

  11. #11
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour je ne suis pas fort non plus en thread, mais je fais seulement une reflexion theorique sur le projet.

    En fait le prbleme est que meme si tu as un thread dans ton appli il depend de toute facon de l'application elle meme et donc de la classe la plus haut qui est celle de la form. Ce qui veut dire, je pense, que lorsque la forme ce met a jour TOUTE SEULE elle prend la main sur le reste. Un thread a ma connaissance permet de disocié un process du reste de l'application, tu peux toujours clique sur les boutons on faire autre chose pendant ce temps.

    A mon avis le seul moyen, qui va ralentir l'affichage, c'est que tu empeche le refresh automatique de la form, et que tu le fasse toi meme dans un thread. Tu cout les deux vont ce retrouve au meme niveau, et tu doit meme pouvoir donnée des priorités.

    C'est as tester, reflexion seulement theorique ... :o))

Discussions similaires

  1. problème avec un import et un thread
    Par cFranssen dans le forum Général Python
    Réponses: 17
    Dernier message: 22/04/2011, 17h10
  2. problème avec les formats -débutant-
    Par diddix dans le forum Fortran
    Réponses: 3
    Dernier message: 09/07/2010, 12h19
  3. Problème avec la synchronization de 2 threads
    Par Frac10 dans le forum Concurrence et multi-thread
    Réponses: 15
    Dernier message: 20/11/2006, 11h36
  4. Thread--> problème avec ThreadProc
    Par stof dans le forum MFC
    Réponses: 33
    Dernier message: 08/06/2005, 13h47
  5. Réponses: 5
    Dernier message: 10/05/2005, 10h22

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