Memory Leaks in Prism

Dopo qualche mese di utilizzo e a un passo dall’andare in produzione con le prime iterazioni stabili direi che ho acquisito abbastanza esperienza sul frameowrk Prism di Microsoft P&P. In 4ward stiamo lavorando su una Software Factories che aiuti a semplificare e guidare i team nell’utilizzo di Prism, e nel frattempo abbiamo riscontrato alcuni problemini.

 

Fate attenzione ai seguenti Memory Leaks:

- bug in DelegateCommand e CompositeCommand creano automaticamente un handler per ICommand.CanExecuteChanged, che non usa le weak references e non è possibile gestirlo dal proprio codice; di conseguenza MVVM che usano questi comandi rimangono in memoria se i comandi sono gestiti in una classe Singleton. (Nel source code disponibile su Codeplex, nella release V3 è presente una fix al problema, vedrò come applicarla alla V2)

- bug nel metodo CompositePresentationEvent<>.Subscribe() non consente l’utilizzo dei “weak event references” e quindi tutte le classi che usano l’EventAggregator rimangono referenziate una con l’altra ed è impossibile farne il dispose.

posted @ domenica 11 ottobre 2009 23:28

Print

Comments on this entry:

# re: Memory Leaks in Prism

Left by Ivan at 11/10/2009 23:36
Gravatar
In realtà per il secondo bug è sufficiente fare l'unsubscribe a mano di tutti glie eventi registrati per evitare il memory leak, comunque by design impostando Strong references a false dovrebbe fare tutto da solo a discapito delle performance e invece: BUG :)
Comments have been closed on this topic.