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

VB.NET Discussion :

Timer qui ne leve pas d'évent


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 41
    Points
    41
    Par défaut Timer qui ne leve pas d'évent
    Kikou tout le monde,

    J'ai un problème vraiment de base avec un Timer sous VB.net

    Quand je demande de lancer le timer par Timer.Start() directement, il n'a aucun problème mais quand j'intégre le code dans mon programme et que je passes par un Invoke pour appeler la fonction qui lance le Timer, l'event lié à l'objet n'est jamais levé !

    Savez-vous me dire d'où cela pourrait venir ?

    voici le code :
    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
    18
    Public Class Job
        WithEvents Chk_End_Ana As New Timer()
     
        Public Sub New()
            Chk_End_Ana.Enabled = True
            Chk_End_Ana.Stop()
            Chk_End_Ana.Interval = 1000
        End Sub
     
        Public sub Action()
            'faire plient de truc
            Chk_End_Ana.Start()
        End Sub
     
        Public Sub Chk_End_Ana_Tick() Handles Chk_End_Ana.Tick
            Debug.Print("Timer Event")
        End Sub
    End Class
    j'ai tenté de faire avec des Chk_End_Ana.Enable = True/False à la place de Start()/Stop(). J'ai également tenté de faire avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddHandler Chk_End_Ana.Tick, AddressOf Chk_End_Ana_Tick
    Mais rien n'a changé, j'ai jamais l'event qui arrive avec un Invoke

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    .start équivaut à .enabled = true
    (.stop = .enabled à false)

    donc déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     Chk_End_Ana.Enabled = True
            Chk_End_Ana.Stop()
    ne sert à rien


    ton code m'a l'air bon

    il faudrait voir l'appel à Action

    à tu mis des points d'arret pour voir ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Oui, j'ai bombardé de breakpoint et dé que la fonction Action passe par un Invoke, le timer ne fait plus de "Tick". Pire, une fois qu'il passe par l'Invoke et que je repasse en direct, il ne léve plus non plus l'event en question.

    J'ai tenté d'ajouter un Addhandle juste devant le Chk_End_Ana.Start() dans Action. J'ai alors comme résultat un double passage dans l'event en direct et rien par l'Invoke.

    J'y perd mon Latin

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    au lieu de new timer essaye new system.timers.timer
    l'évènement est Elapsed au lieu de tick
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Merci, l'event est bien géré, le plus gros du problème est donc réglé.

    Il me faut juste modifier le code actuel pour éviter le "Cross-thread operation not valid" que ce Timer génère.

    Merci beaucoup !!!!

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    oui c'est l'inconvénient ^^

    il faut demander à Me d'invoker un delegué
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Timer qui ne bloque pas l'interface
    Par arketip dans le forum Général Python
    Réponses: 1
    Dernier message: 14/04/2009, 19h55
  2. Indicateur d'avancement et timer qui bouge pas
    Par papadrago dans le forum Delphi
    Réponses: 6
    Dernier message: 04/02/2007, 00h32
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. [VB6] générer un recordset qui n'est pas lier à un bdd
    Par damyrid dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/06/2003, 17h48
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

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