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 :

Problème Délégué Invoke


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    Nom : Capture.png
Affichages : 80
Taille : 14,5 Ko

    Par contre, si au lieu d'utiliser "Me" j'utilise n'importe quel Controle de Form1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Label1.Invoke(New Delegate1(AddressOf SubForm1), ValeurPosition)
    l'erreur disparait.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut
    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.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 921
    Par défaut
    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.

  4. #4
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Bonjour,

    Effectivement donne nous des éléments et un extrait de ton code pour que nous puissions t'aider.

    A+

Discussions similaires

  1. [VB.NET 1.1] [Thread] Méthode invoke
    Par toniolol dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/02/2006, 16h04
  2. org.apache.axis.client.invoke() en exception
    Par ep31 dans le forum Services Web
    Réponses: 2
    Dernier message: 27/01/2006, 15h26
  3. [C#]Comment utiliser P/Invoke ?
    Par pataphysicien dans le forum C#
    Réponses: 3
    Dernier message: 19/01/2006, 01h58
  4. [SOAP] Invoke en ligne de commande
    Par ouechouech dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 30/09/2005, 09h27
  5. [Com] Interface IDispatch.Invoke
    Par Laurent Dardenne dans le forum Windows
    Réponses: 4
    Dernier message: 15/06/2004, 22h51

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