Nachdem ich diesen Beitrag gelesen hatte, stieß ich auf eine Webseite mit einigen Informationen. Es ist eine Seite auf CodePlex namens Speicherverlust von DelegateCommand.CanExecuteChanged Ereignisse verursacht.
Berichtet von: huetter
Aktualisiert von: dschenkelman
Beim Profiling meiner Anwendung habe ich festgestellt, dass es viele EventHandler gibt war nie von DelegateCommands abgemeldet worden CanExecuteChanged-Ereignis. Also diese EventHandler waren noch nie Garbage-Collector, die einen schwerwiegenden Speicherverlust verursacht.
Die Registrierung von CanExecuteChanged-EventHandles erfolgt außerhalb Anwendungsbereich Code Ich hatte erwartet, dass sie abgemeldet werden automatisch auch. An diesem Punkt dachte ich, das könnte genauso gut sein ein ThirdParty WPF-Kontrollproblem, aber weiter graben lese ich einen Blog Post besagt, dass „WPF das ICommand.CanExecuteChanged-Ereignis erwartet WeakReferences für EventHandler anzuwenden. "Ich habe es mir angesehen RoutedCommand und bemerkte es WeakReferences auch verwendet wird.
Ich habe DelegateCommand angepasst, um eine ähnliche Implementierung zu verwenden Das CanExecuteChanged-Event von RoutedCommand und der Speicherleck waren Weg. Das gleiche gilt für CompositeCommand.
Geschlossen am 3. November 2009 um 18:28 Uhr von Dieses Problem wurde in der behoben Prism-v2.1 release, so dass das Workitem jetzt geschlossen ist. Prism 2.1 kann sein heruntergeladen von hier:
Ссылка