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 :

utilisation des delegate [VB.net]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Par défaut utilisation des delegate [VB.net]
    Bonjour, voici mon probleme.
    J'ai une interface avec des voyants (recopies de bits) et des textbox qui doivent afficher des mesures de delai a chaque fois qu'elles se produisent (toutes les 3-5 secondes). J'ai une fonction qui fait la mesure de delai et marche tres bien. Les voyant sont programmés dans un timer pour etre rafraichi tout le temps, et dans ce timer je veux également mettre l'affichage du delai : delai2 = delais() (delai2 est le nom du text box et delais() la fonction qui retourne cette valeur). Le souci c'est qu'il attend la mesure de delai pour passer a la suite du code. Ducoup le programme et les voyants sont gelés. Si vous pouviez modifier mon code avec les delegate ce serait sympa pour une execution asynchrone.


    PrivateSub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed

    Dim readData2() AsBoolean
    readData2 = myDigitalReader2.ReadSingleSampleMultiLine()
    Babord.Value = readData2(6) babord et tribord sont des voyants affecté a des bits
    Tribord.Value = readData2(5)
    .........
    delai2.Text = delais() voila le probleme
    EndSub

    mesure du delai ok
    PrivateFunction delais()
    Dim max AsDouble = 0.3
    Dim min AsDouble = 0.001
    Dim valeurDelai2 AsString
    myTask = New Task
    firstEdge = CITwoEdgeSeparationFirstEdge.Rising
    secondEdge = CITwoEdgeSeparationSecondEdge.Rising
    myTask.CIChannels.CreateTwoEdgeSeparationChannel("Dev2/ctr2", "", min, _
    max, firstEdge, secondEdge, CITwoEdgeSeparationUnits.Seconds)
    counterInReader =
    New CounterReader(myTask.Stream)
    Dim data AsDouble = counterInReader.ReadSingleSampleDouble()
    valeurDelai2 = data.ToString
    Return valeurDelai2
    EndFunction

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    A mon avis, il n'y a pas besoin de delegate ou de threads.

    Puisque la mesure de délai prends du temps, elle doit s'exécuter entre les lectures et non au moment de la lecture.
    La fonction delai() peut donc lire la valeur du compteur puis relancer une mesure dont le résultat sera connu au prochain appel.

  3. #3
    Membre confirmé Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Par défaut
    Mon application doit vraiment s'executer de maniere asynchrone, le reste du code doit s'executer en attendant la prochaine mesure de delai

  4. #4
    Membre confirmé Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Par défaut
    C'est bon j'ai trouvé la solution, avec les delegates.

Discussions similaires

  1. Utilisation des classes managées .net dans PHP
    Par Hinault Romaric dans le forum Langage
    Réponses: 2
    Dernier message: 19/02/2011, 10h46
  2. Utilisation des Delegate sur des Threads
    Par Freud44 dans le forum C#
    Réponses: 5
    Dernier message: 14/01/2010, 11h40
  3. Réponses: 1
    Dernier message: 24/11/2006, 16h36

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