VB et les execption

Signaler
Messages postés
26
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
7 juin 2011
-
Messages postés
26
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
7 juin 2011
-
bonjour
j'ai créé une fonction CBstatus() en VB.net et un timer qui fais l'appel à cette fonction chaque 10 ms
cette fonction permet de recupérer des donné sur un bus CAN ,donc s'il ya pas donné elle présente un erreur que je dois l’afficher une seul fois ,c'est pour cela j'ai mé une condition if pour afficher ce meessage une seul fois mais malheuresemnt ca marche pas tjr il me donne des fenêtre d'erreur suivant le timer
voila le code et merci pour une idée

 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

dim i as integer =0
try 
CBstatus()
Catch ex As Exception

 if i=0 then
    msgbox(" pas de donné sur le bus CAN")
    i=1
end if
End Try
End Sub

5 réponses

Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Bonjour,

Votre variable i est une variable interne à la sub Timer1_Tick.
Donc à chaque fois que le compteur fait un tour et que la sub Timer1_Tick est appelée, i prend la valeur 0. Donc i est toujours égale à 0 ce qui fait que votre message est affiché à chaque fois.

Il faut donc déclarer i comme ceci :
Private i as Integer = 0

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

  Try 
     CBstatus()
  Catch ex As Exception

     If i=0 Then
        msgbox(" pas de donné sur le bus CAN")
        i=1
     End if

  End Try
End Sub 
Messages postés
26
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
7 juin 2011

bonjour pour la réponse
j'ai vérifie ce que ta dis parce que jé déjà essayer comme ça mé malheureusement tjr le même problème
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Oui, désolé. Voici la correction
Private i as Integer = 0

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

  Try 
     CBstatus()
  Catch ex As Exception

     If i = 0 Then
        i = 1
        msgbox(" pas de donné sur le bus CAN")
     End if

  End Try
End Sub
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
L'explication est que si on affecte 1 à i après le messagebox, la fenetre de message étant modale, i ne passe à 1 qu'après avoir cliqué sur le bouton Ok du message. Ce qui laisse le temps au timer de 10 ms d'en afficher un paquet d'autre.
Messages postés
26
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
7 juin 2011

c parfait
merci à vous tous