Pour gérer un canal série j'utilise un "OPCServer".
Dans les données que je recois il y a aussi la date et le temps
que j'utilise pour effectuer des opérations périodiques.
À chaque arrivée de la donnée "temps" est associé,au moyen d'un OPCGroup,
un évènement que j'appelle "Time_DataChange".
Ma question:
L'élaboration de l'évènement "Time_DataChange" nécessite beaucoup de temps
et il peut arriver qu'à l'arrivée du prochain "Time_DataChange",
l'élaboration ne soit pas encore terminée.
Pour éviter cela j'aimerais suspendre le déclenchement de l'évènement
"Time_DataChange" pour permettre de terminer la procédure
d'élaboration en cours.
J'ai essayé d'utiliser les attributs "IsActivate" et "IsSubscribed"
mais OPCServer va en "tilt".
Je vous remercie de votre aide.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gloops
Bonjour,
Je verrais bien quelque chose comme
Dim booTemps As Boolean 'déclaration au niveau module
'début de traitement, par exemple Form_Load : booTemps = False
Private Sub Time_DataChange() If booTemps = True then Exit Sub booTemps = True
' Oh le long traitement que voilà
booTemps = False End Sub
Si le timer n'a pas le temps de faire If booTemps = True then Exit Sub, alors il faut augmenter sa propriété Interval, il ne doit pas y avoir grand-chose dedans.
Je fais ça avec mes synchronisations de sous-formulaires, pour les créations d'enregistrements (il n'y a pas que les timers qui peuvent avoir à être neutralisés), le hic a juste été de désigner le bon module de la bonne manière. Dans ton cas le problème ne devrait pas se poser.
ulisse a écrit, le 24/05/2005 11:11 :
Bonjour à tous
Description de mon utilisation:
Pour gérer un canal série j'utilise un "OPCServer". Dans les données que je recois il y a aussi la date et le temps que j'utilise pour effectuer des opérations périodiques. À chaque arrivée de la donnée "temps" est associé,au moyen d'un OPCGroup,
un évènement que j'appelle "Time_DataChange".
Ma question:
L'élaboration de l'évènement "Time_DataChange" nécessite beaucoup de temps
et il peut arriver qu'à l'arrivée du prochain "Time_DataChange", l'élaboration ne soit pas encore terminée. Pour éviter cela j'aimerais suspendre le déclenchement de l'évènement
"Time_DataChange" pour permettre de terminer la procédure
d'élaboration en cours. J'ai essayé d'utiliser les attributs "IsActivate" et "IsSubscribed"
mais OPCServer va en "tilt". Je vous remercie de votre aide.
Cordiales salutations
ulisse
Bonjour,
Je verrais bien quelque chose comme
Dim booTemps As Boolean 'déclaration au niveau module
'début de traitement, par exemple Form_Load :
booTemps = False
Private Sub Time_DataChange()
If booTemps = True then Exit Sub
booTemps = True
' Oh le long traitement que voilà
booTemps = False
End Sub
Si le timer n'a pas le temps de faire If booTemps = True then Exit Sub,
alors il faut augmenter sa propriété Interval, il ne doit pas y avoir
grand-chose dedans.
Je fais ça avec mes synchronisations de sous-formulaires, pour les
créations d'enregistrements (il n'y a pas que les timers qui peuvent
avoir à être neutralisés), le hic a juste été de désigner le bon module
de la bonne manière. Dans ton cas le problème ne devrait pas se poser.
ulisse a écrit, le 24/05/2005 11:11 :
Bonjour à tous
Description de mon utilisation:
Pour gérer un canal série j'utilise un "OPCServer".
Dans les données que je recois il y a aussi la date et le temps
que j'utilise pour effectuer des opérations périodiques.
À chaque arrivée de la donnée "temps" est associé,au moyen d'un OPCGroup,
un évènement que j'appelle "Time_DataChange".
Ma question:
L'élaboration de l'évènement "Time_DataChange" nécessite beaucoup de temps
et il peut arriver qu'à l'arrivée du prochain "Time_DataChange",
l'élaboration ne soit pas encore terminée.
Pour éviter cela j'aimerais suspendre le déclenchement de l'évènement
"Time_DataChange" pour permettre de terminer la procédure
d'élaboration en cours.
J'ai essayé d'utiliser les attributs "IsActivate" et "IsSubscribed"
mais OPCServer va en "tilt".
Je vous remercie de votre aide.
Dim booTemps As Boolean 'déclaration au niveau module
'début de traitement, par exemple Form_Load : booTemps = False
Private Sub Time_DataChange() If booTemps = True then Exit Sub booTemps = True
' Oh le long traitement que voilà
booTemps = False End Sub
Si le timer n'a pas le temps de faire If booTemps = True then Exit Sub, alors il faut augmenter sa propriété Interval, il ne doit pas y avoir grand-chose dedans.
Je fais ça avec mes synchronisations de sous-formulaires, pour les créations d'enregistrements (il n'y a pas que les timers qui peuvent avoir à être neutralisés), le hic a juste été de désigner le bon module de la bonne manière. Dans ton cas le problème ne devrait pas se poser.
ulisse a écrit, le 24/05/2005 11:11 :
Bonjour à tous
Description de mon utilisation:
Pour gérer un canal série j'utilise un "OPCServer". Dans les données que je recois il y a aussi la date et le temps que j'utilise pour effectuer des opérations périodiques. À chaque arrivée de la donnée "temps" est associé,au moyen d'un OPCGroup,
un évènement que j'appelle "Time_DataChange".
Ma question:
L'élaboration de l'évènement "Time_DataChange" nécessite beaucoup de temps
et il peut arriver qu'à l'arrivée du prochain "Time_DataChange", l'élaboration ne soit pas encore terminée. Pour éviter cela j'aimerais suspendre le déclenchement de l'évènement
"Time_DataChange" pour permettre de terminer la procédure
d'élaboration en cours. J'ai essayé d'utiliser les attributs "IsActivate" et "IsSubscribed"
mais OPCServer va en "tilt". Je vous remercie de votre aide.