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

Windows Presentation Foundation Discussion :

DependencyProperty : Libération de ressource


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut DependencyProperty : Libération de ressource
    Bon c'est la journée des embetements avec WPF.

    j'ai cette classe avec une dependencyProperty :

    Code C# : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    /// <summary>
        /// Logique d'interaction pour StorageDetail.xaml
        /// </summary>
        public partial class StorageDetail : UserControl
        {
     
            public static DependencyProperty StorageProperty = DependencyProperty.Register("Storage", typeof(Storage), typeof(StorageDetail),
                new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallback(OnStorageChanged)));
     
            public static readonly RoutedEvent StorageChangedEvent = EventManager.RegisterRoutedEvent(
                    "StorageChanged", RoutingStrategy.Bubble,
                     typeof(RoutedPropertyChangedEventHandler<Storage>), typeof(StorageDetail)); 
     
            private ObjectDataProvider storage;
            private ObjectDataProvider isReadOnly;
     
            /// <summary>
            /// Constructeur par défaut
            /// </summary>
            public StorageDetail()
            {
                InitializeComponent();
     
                storage = this.FindResource("storage") as ObjectDataProvider;
                isReadOnly = this.FindResource("readOnly") as ObjectDataProvider;
                isReadOnly.ObjectInstance = false;
            }
     
            /// <summary>
            /// Evènement déclenché lors de la modification du lieu de stockage affiché
            /// </summary>
            public event RoutedPropertyChangedEventHandler<StorageDetail> StorageChanged
            {
                add { AddHandler(StorageChangedEvent, value); }
                remove { RemoveHandler(StorageChangedEvent, value); }
            } 
     
            /// <summary>
            /// Obtient ou défini le lieu de stockage affiché
            /// </summary>
            public Storage Storage
            {
                get
                {
                    return (Storage)GetValue(StorageProperty);
                }
     
                set
                {
                    SetValue(StorageProperty, value);
                }
            }
     
            /// <summary>
            /// Obtient ou défini si le controle est en lecture seul ou non
            /// </summary>
            public bool IsReadOnly
            {
                get
                {
                    return (bool)this.isReadOnly.ObjectInstance;
                }
     
                set
                {
                    this.isReadOnly.ObjectInstance = value;
                }
            }
     
            private static void OnStorageChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
            {
                if (!(sender != null && sender is StorageDetail))
                    return;
     
                StorageDetail sd = sender as StorageDetail;
                sd.storage.ObjectInstance = (Storage)args.NewValue;
     
            }
     
            private void OnStorageChanged(RoutedPropertyChangedEventArgs<Storage> e)
            {
                RaiseEvent(e);
            } 
     
        }

    le type de donnée Storage implémente bien INotifyPropertyChanged

    Le problème : Lors de la fermeture de l'application (par fermeture de la fenetre principale ) un thread ( Marqué Thread principal dans VS ) reste ouvert. Impossible de savoir dans quel code il tourne ...

    Je sais que le pb vient de la car :
    - Avant de mettre cette dependencyProperty ça fonctionnais nickel.
    - Si elle est pas utilisé (Donc si je bind pas de donnée dessus ) ça fonctionne aussi

    Bref j'en ai marre WPF s'acharne sur moi

  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
    T'es le roi des pb de WPF aujourd'hui


    Quoiqu'il en soit, je n'ai jamais rencontré un problème comme celui-là: t'as pas une référence à cette DP qui traine quelque part d'autre :

  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Ben non en fait bien plus stupide que cela.
    J'ai un thread d'update de données qui boucle en permance

    je rentre me cacher ... ( comme quoi on devrait jamais utiliser une techno que l'on maitrise pas completement )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Libération de ressource DirectShow
    Par crealinks dans le forum DirectX
    Réponses: 5
    Dernier message: 07/05/2007, 16h02
  2. Réponses: 4
    Dernier message: 20/04/2007, 15h19
  3. [C# 2.0] Libération de ressources
    Par hdd dans le forum C#
    Réponses: 2
    Dernier message: 28/02/2007, 16h34
  4. libération des ressource d'une table
    Par dracula2000 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/06/2006, 18h06
  5. Réponses: 13
    Dernier message: 03/04/2006, 10h01

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