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

Dotnet Discussion :

Marshalling et pin_ptr [Fait]


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Par défaut Marshalling et pin_ptr
    Bonjour,

    Si on a converti un delegate en pointeur de fonction avec le marshalleur du Runtime, est-ce qu'on a besoin de mettre un pointeur épingle quelque part, ou le marshalleur le fait tout seul ?

    Merci beaucoup

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Pas sur de ton comprendre avec ton histoire de pointeur épingle: tu peux réexpliquer (avec du code éventuellement) ?

  3. #3
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 185
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 185
    Par défaut
    Bonjour.

    Tu veux sans doute parler d'utiliser une instance de ta fonction delegate quand tu parles de "pointeur épingle".

    Donc si c'est le cas, c'est oui car sinon tu encours le risque d'un gros méchant CallbackOnCollectedDelegate --> le garbage collector a tout simplement ramassé le pointeur du delegate, celui-ci n'étant pas formellement positionné dans le code managé.

    Edit : ah ben non, on dirait du C++ d'aprés la FAQ :
    http://dotnet.developpez.com/faq/cpp...nteriorpointer

    Cdt.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Par défaut
    Merci beaucoup à vous d'avoir répondu, et désolé de répondre si tard.

    En fait c'est précisément ce que tu disais olsimare. Le problème était que j'avais une méthode managée (C#), sur laquelle je prenais un delegate.

    Ensuite, je le marshallais en un pointeur de fonction natif, et je le passais à un thread natif, qui l'appelait quand il voulait.

    Ce que je ne comprenais pas était que je finissais effectivement, au bout d'un temps variable, par avoir un CallbackOnCollectedDelegate sur cette méthode. Or comme je l'avais marshallé, je pensais que le marshalleur mettait (en quelque sorte) un pointeur épingle sur le delegate, afin qu'il soit toujours ne soit pas déplacé ou collecté. En fait il finissait par sortir du scope, donc il était libéré (mais ça je l'ai compris très tard :d).

    J'ai du coup utilisé cet article pour m'en sortir : http://msdn2.microsoft.com/fr-fr/lib...e0(VS.80).aspx

    Voila, donc c'est juste que je suis un boulet

    Merci beaucoup !

Discussions similaires

  1. [Remoting] Quel est le lien entre marshalling/serialisation?
    Par mehdi82 dans le forum Framework .NET
    Réponses: 7
    Dernier message: 13/12/2007, 15h37
  2. [Marshalling] 2.0
    Par le-roy_a dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/01/2007, 16h02
  3. [JAXB 2.0] Validation et marshalling
    Par Ricky81 dans le forum Persistance des données
    Réponses: 2
    Dernier message: 03/11/2006, 16h24
  4. [C#] Dll C++ et marshaling de VARIANT
    Par monk31 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/02/2005, 13h32
  5. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05

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