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 :

[VB.net]Delegate


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 [VB.net]Delegate
    Bonjour, je reviens sur un problème que j'ai eu dans un autre post sur les threads et delegates, parce que la ça devient l'enfer, pas une methode qui marche correctement. J'ai absolument besoin d'une application qui soit rapide sans un seul gèle d'écran. Voila j'utilise des délégués pour afficher dans des TextBox des mesures de délais entre signaux faits par une carte d'aquisition pci (NiDaqmx). J'en ai 8 à faire en tout. 2 se font en même temps puis 2-3 secondes plus tard 2 autres etc... Mais voilà au bout d'un moment ça rame et ça influe sur le bon fonctionnement du reste. J'ai testé mon appli seulement avec les délais et c'est bien ça qui fait ramer le tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    myTask1 = New Task
    'Premiere mesure de  délai, il y a 8 fonctions comme ça en tout et ça tourne dans un timer
    pour rafraichir en permanence les nouvelles valeurs dans les textbox
    myTask1.CIChannels.CreateTwoEdgeSeparationChannel("Dev2/ctr0", "", min, _
    max, CITwoEdgeSeparationFirstEdge.Rising, CITwoEdgeSeparationSecondEdge.Rising, _
     CITwoEdgeSeparationUnits.Seconds)
    myCallBack1 = New AsyncCallback(AddressOf CounterInCallback1)
    counterInReader1 = New CounterReader(myTask1.Stream)
    counterInReader1.BeginReadSingleSampleDouble(myCallBack1, Nothing)
     
    Et là je récupère la valeur du délai.
    PrivateSub CounterInCallback1(ByVal ar1 As IAsyncResult)
    measureDelai1 = counterInReader1.EndReadSingleSampleDouble(ar1)
    Delai1.Text = measureDelai1.ToString()
    EndSub
    
    Delai1.Text c'est le TextBox où apparaitra la valeur du délai.
    notez que BeginReadSingleSampleDouble et EndReadSingleSampleDouble sont équivalent à beginInvoke et EndInvoke.
    Qu'est ce qui fait que c'est lent ?
    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 95
    Par défaut
    Salut,

    difficile de ta répondre comme ça (sans en voir plus) mais une petite remarque :

    Si tu éprouve des lenteurs au niveau de l'interface c'est qu'il y a des interractions directes entre le tread principal (form) de ton programme et les autres.

    Je ne saurais trop te conseiller d'utiliser la classe ( voir le composant ) BackgroudWorker qui te permet de gérer ce genre de problème trés facilement. Biensur celà implique que tu sois en Fw2.0 .

    A+

  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
    Helas je suis en FW1.1, ça va etre difficile

  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
    J'ai essayé de faire passer dans un thread secondaire la mesure et l'affichage des délais, mais après un certain temps il me leve un system.outofmemoryexception. Lorsqu'on agit sur controle on doit obligatoirement le faire dans le thread principal ou est ce qu'on peut contourner cette exception ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/11/2007, 09h36
  2. Réponses: 3
    Dernier message: 21/10/2006, 12h39
  3. Réponses: 2
    Dernier message: 17/08/2006, 14h50
  4. utilisation des delegate [VB.net]
    Par grand_prophete dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/04/2006, 15h08
  5. [VB.NET][WINFORMS] Gestion de delegate
    Par Misterburma dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/01/2006, 16h27

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