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

C++/CLI Discussion :

Erreur sur un l'appel d'un pointeur de fonction managé depuis c++ (Callback)


Sujet :

C++/CLI

  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut Erreur sur un l'appel d'un pointeur de fonction managé depuis c++ (Callback)
    Hello,

    J'ai l'erreur suivante :

    Managed Debugging Assistant 'CallbackOnCollectedDelegate' has detected a problem in 'xxx.exe'.
    Additional Information: A callback was made on a garbage collected delegate of type DLLNative!DlgMyDelegate::Invoke'. This may cause application crashes, corruption and data loss. When passing delegates to unmanaged code, they must be kept alive by the managed application until it is guaranteed that they will never be called.
    mon scénario :
    1) je fournis à la Dll native un pointeur de Callback sous la forme d'un delegate
    Dans la fonction qui enregistre la callback je passe en argument directement le nom de fonction !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MyClasseCtor()
    {
    DLLNative.RegisterCallBack(FunctionCallBack);
    }
    private void FunctionCallBack(decimal _Value)
    {...}
    2) ce delegate est appelé depuis la DLL native et l'erreur survient apres un temps variable (selon le GC je suppose)


    Comme l'objet qui contient la fonction passé à la DLL native est toujours instancié et utilisé, je ne comprend pas comment ce pointeur peut etre nettoyé par le GC ??? Quel stratagème mettre en place ?

    J'ai aussi essayé de stocker le delegate dans une variable de classe...meme problème.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Points : 2 082
    Points
    2 082
    Par défaut
    Salut,

    As-tu essayé de jouer sur un bout de mémoire "fixed" à l'instanciation ?

    http://msdn.microsoft.com/fr-fr/library/f58wzh21.aspx

Discussions similaires

  1. Erreur sur procédure stockée appelant une macro
    Par dreylm dans le forum Macro
    Réponses: 6
    Dernier message: 19/01/2010, 13h14
  2. message erreur sur appel module
    Par Daniel MOREAU dans le forum Access
    Réponses: 10
    Dernier message: 15/02/2007, 16h43
  3. Réponses: 3
    Dernier message: 08/11/2006, 17h56
  4. Appel generique de pointeur de fonction qui...
    Par MonsieurAk dans le forum C
    Réponses: 7
    Dernier message: 07/03/2006, 22h05
  5. Erreur sur l'affection d'un pointeur
    Par digital prophecy dans le forum C
    Réponses: 4
    Dernier message: 25/11/2005, 09h07

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