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 :

Evenement avant la destruction d'une classe


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    gph
    gph est déconnecté
    Membre confirmé Avatar de gph
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 99
    Par défaut Evenement avant la destruction d'une classe
    Bonjour,

    Je me heurte à un problème que je n'arrive pas à résoudre avec mon niveau de compétence et je viens donc chercher des pistes ici.

    Le contexte :
    J'ai une classe VB.NET qui utilise une voie série pour communiquer avec un appareil embarqué.

    Le problème :
    Lors de la destruction de la classe, il me faut envoyer une commande de mise en veille sur la voie série.
    Hors, lorsque j'ai mon event Finalize, les ressources sont déjà libérées donc mon objet SerialPort n'est plus disponible.

    Y a t il un moyen (de manière autonome à la classe) d'obtenir un event (ou un overload) du type before_close ?

    Merci.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Est-ce que ta classe implémente IDisposable ?

  3. #3
    gph
    gph est déconnecté
    Membre confirmé Avatar de gph
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 99
    Par défaut
    Non.

    J'ai exploré cette piste, mais Dispose n'est pas appelé automatiquement (enfin si j'ai compris)

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par gph Voir le message
    Non.

    J'ai exploré cette piste, mais Dispose n'est pas appelé automatiquement (enfin si j'ai compris)

    Si. Dispose est appelé quand l'objet est ... "disposed". En revanche, si tu n'utilises pas de "using" (je ne connais pas l'équibalent VB.Net) tu ne peux pas avoir quand il sera appelé.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Using
    ....
    End using
    Existe aussi en VB.Net

    Pour ma part dans un cas similaire j'implémente une fonction Liberer() dans ma classe et je place le code que je veux avant d'appeler MyBase.Finalize:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Public Sub liberer()
            '.... Le code qui nettoie ou pour vous qui met en veille
            MyBase.Finalize()
        End Sub
    Puis dans le code qui utilise la classe j'appelle cette fonction avant la destruction de l'objet que je force par un GC.collect()

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Geo2A Voir le message
    Pour ma part dans un cas similaire j'implémente une fonction Liberer() dans ma classe et je place le code que je veux avant d'appeler MyBase.Finalize:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Public Sub liberer()
            '.... Le code qui nettoie ou pour vous qui met en veille
            MyBase.Finalize()
        End Sub
    Puis dans le code qui utilise la classe j'appelle cette fonction avant la destruction de l'objet que je force par un GC.collect()
    Ca ne sert à rien d'appeler Finalize, c'est le GC qui s'en charge. D'ailleurs, l'implémentation par défaut de Finalize ne fait strictement rien, et la plupart des classes ne la redéfinissent pas (sauf, notamment, celles qui implémentent IDisposable).

    D'autre part, appeler explicitement GC.Collect n'est absolument pas recommandé. C'est un traitement lourd et donc pénalisant pour les performances. Le CLR se charge de déclencher la collecte quand c'est nécessaire, ça ne sert à rien de le faire soi-même

Discussions similaires

  1. Destruction d'une classe sous PHP5
    Par ctrl+z dans le forum Langage
    Réponses: 8
    Dernier message: 12/01/2009, 09h32
  2. Evenement dans une classe
    Par charliejo dans le forum Flash
    Réponses: 8
    Dernier message: 08/01/2007, 14h28
  3. Plantage lors de la destruction d'une classe
    Par xwindoo dans le forum C++
    Réponses: 10
    Dernier message: 04/10/2006, 16h01
  4. Réponses: 4
    Dernier message: 23/04/2006, 10h36
  5. destruction d'une classe qui herite de CDialog
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 03/02/2004, 17h39

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