-
1 pièce(s) jointe(s)
Problème Délégué Invoke
Bonjour à tous,
j'ai un soucis avec une partie de code.
J'utilise un composant pour lire un fichier Midi.
Ce composant m'invite à ajouter une procedure avec "AddHandler" pour savoir
a quelle position je me trouve dans le fichier Midi pendant sa lecture :
Code:
Private Sub OnPlayback(sender As Object, e As PlaybackCurrentTimeEventArgs)
Dans cette Sub, j'ai du utiliser un Délégué pour renvoyer la valeur retourné par "OnPlayback",
vers une Sub qui se trouve sur "Form1". De cette manière :
Code:
Me.Invoke(New Delegate1(AddressOf SubForm1), ValeurPosition)
Dans la Sub "SubForm1", avec la valeur "ValeurPosition", j'alimente des Label...etc...
Tout fonctionne bien.
Sauf quand je quitte le programme.
Dans l'evenement "Form1_FormClosing" j'arrete le composant avec sa fonction "Stop" et
je supprime l'evenement avec "RemoveHandler". Mais rien n'y fait, j'ai systematiquement
cette erreur :
Pièce jointe 666127
Par contre, si au lieu d'utiliser "Me" j'utilise n'importe quel Controle de Form1 :
Code:
Me.Label1.Invoke(New Delegate1(AddressOf SubForm1), ValeurPosition)
l'erreur disparait.
-
Vous aussi ça vous laisse perplexe.
Ma théorie c'est que je pense que c'est pas une bonne idée d'arrêter
un Event au moment du déchargement d'une Form quand ce même Event se déclenche
sur celle-ci.
En même temps, pourquoi ça fonctionne quand j'utilise plutôt un Contrôle placé sur cette
même Form ?!
ça voudrait dire que VB.Net libère la Form avant les contrôles situés sur celle-ci ?
Comme j'ai pas trop de temps à consacrer à cette bizarrerie (en fait je n'comprend pas
les mécanismes sous-jacent), j'ai ajouté un bouton "Quitter" dans lequel je place le "RemoveHandler"
et l'instruction ".Stop", et évidement maintenant tout fonctionne correctement.
-
Je n'ai personnellement pas répondu car tu n'a pas fourni les informations essentielle à la résolution de ton problème.
Tu parles d'un composant mais tu ne dis pas de quel composant il s'agit.
Tu parles d'un délégué mais on ne sais pas de quelle manière tu l'as déclaré.
Tu parles de méthodes AddHandler et RemoveHandler mais il n'y en a aucune trace dans le code que tu montres.
-
Bonjour,
Effectivement donne nous des éléments et un extrait de ton code pour que nous puissions t'aider.
A+