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

Silverlight Discussion :

[SL3] Problème avec le garbage collector


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Par défaut [SL3] Problème avec le garbage collector
    Salut à tous
    Aujourd'hui j'ai un gros soucis ... pour des soucis de performance je dois détruire des objets à certains moment, malheureusement le GC (Garbage Collector) ne fais pas bien son taf. Il nettoie quand il veut même si je le force il ne le fait pas tout de suite.
    Du coup j'ai fait un petit projet de test pour bien comprendre se qui se passe, j'ai un objet tout simple et un bouton, quand je clic sur mon bouton ca détruit l'objet.
    Sauf que si je met un point d'arrêt dans le destructeur, je m'arrête que lors du deuxième clic voir des fois plus, comment faire pour que je passe dedans du 1er coup ??

    Voici mon "Main Page.xaml" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <UserControl
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:SilverlightDisposeTest" x:Class="SilverlightDisposeTest.MainPage"
        >
      <Grid x:Name="LayoutRoot">
      	<Grid.RowDefinitions>
      		<RowDefinition Height="Auto"/>
      		<RowDefinition/>
      	</Grid.RowDefinitions>
     
      	<local:ucCell x:Name="ucTest"/>
      	<Button Content="Test Me" Grid.Row="1" Click="Button_Click"/>
     
      </Grid>
    </UserControl>
    Le "main Page.xaml.cs" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
     
    namespace SilverlightDisposeTest
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
            }
     
            private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
            {
                this.LayoutRoot.Children.Remove(ucTest);
    			ucTest = null;
                GC.Collect();
                GC.WaitForPendingFinalizers();
     
            }
        }
    }
    et mon objet ucCell :
    le xaml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <UserControl x:Class="SilverlightDisposeTest.ucCell"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <Grid x:Name="LayoutRoot" Background="White">
            <Button x:Name="btnTest" Content="Test"></Button>
        </Grid>
    </UserControl>
    et le c# :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
     
    namespace SilverlightDisposeTest
    {
        public partial class ucCell : UserControl,IDisposable
        {
            public ucCell()
            {
                InitializeComponent();
            }
     
            ~ucCell()
            {
                Dispose();
            }
     
     
            #region IDisposable Membres
            public void Dispose()
            {
     
            }
            #endregion
        }
    }
    merci de votre aide

  2. #2
    Membre confirmé Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    Salut !

    Je me suis posé les même questions au niveau de la destruction des objets en silverlight par le GC.

    Pour ton problème, pour que le GC détruise l'objet du premier coup il suffit d'ajouter cette ligne dans ta méthode dispose de ton contrôle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LayoutRoot.Children.Clear();
    Je suppose qu'ainsi il détruit tous les éléments graphiques inclut dans le contrôle. Si quelqu'un a plus d'explication sur le sujet ?

  3. #3
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour,

    Peut être que ceci pourra aider à la comprehension du problème :

    http://www.ucaya.com/blog/2009/04/24...rlightNet.aspx

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 121
    Par défaut
    Citation Envoyé par Samoteph Voir le message
    Bonjour,

    Peut être que ceci pourra aider à la comprehension du problème :

    http://www.ucaya.com/blog/2009/04/24...rlightNet.aspx
    Merci j'en profite aussi

Discussions similaires

  1. Problème Garbage Collector
    Par ludo00002 dans le forum Firebird
    Réponses: 0
    Dernier message: 31/07/2012, 11h43
  2. Problème avec Data Collector
    Par Philippe Robert dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/05/2012, 09h17
  3. Problème lié au Garbage collector
    Par yohannc dans le forum Général Java
    Réponses: 2
    Dernier message: 28/12/2010, 12h16
  4. Réponses: 0
    Dernier message: 02/06/2009, 14h55
  5. probleme avec le garbage collector
    Par anthonycosson dans le forum MFC
    Réponses: 1
    Dernier message: 09/05/2006, 21h42

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