Select the product you need help with
Nevracení paměti může dojít při použití datové vazby ve Windows Presentation FoundationID článku: 938416 - Produkty, které se vztahují k tomuto článku. Na této stráncePříznakyPři použití vázání dat v systému Windows Presentation Foundation (WPF), může dojít k nevrácení paměti. PříčinaK tomuto problému dochází, pokud jsou splněny následující podmínky:
Jak potíže obejítChcete-li tento problém vyřešit, použijte jednu z následujících metod. Metoda 1Vlastnost přístup P prostřednictvím Vlastnost DependencyProperty objekt.Metoda 2Vystavit INotifyPropertyChanged rozhraní objektu X.Metoda 3Nastavit režim vazby na data Jednorázově.Prohlášení Toto chování je záměrné. Další informaceVe WPF, operace vázání dat, která není označena jako Jednorázově musí přijímat oznámení o změně vlastností ze zdrojového objektu (objekt X). WPF používá vestavěné upozornění DependencyProperties třídy nebo sdělení INotifyPropertyChanged rozhraní. Pokud DependencyProperties Třída a INotifyPropertyChanged rozhraní není k dispozici, použije WPF ValueChanged událost. Toto chování se týká volací PropertyDescriptor.AddValueChanged Metoda na Popisovač PropertyDescriptor objekt, který odpovídá vlastnosti P. Bohužel tato akce způsobí, že společného jazykového modulu runtime (CLR) vytvořit silné odkaz z tohoto Popisovač PropertyDescriptor objekt do objektu X. CLR také udržuje odkaz na Popisovač PropertyDescriptor objekt global tabulky. Toto chování způsobuje řetězec odkazů v následujícím pořadí:
Metoda řešení 1 a řešení 2 způsobit WPF použít jednu z mechanismů upřednostňovaný oznámení. Metoda řešení 3 pokyn WPF není pro příjem oznámení o změně. Všechny tři řešení metody předejít vytvoření odkazu mezi Popisovač PropertyDescriptor objektu a objekt X. V následujícím příkladu kódu jsou vytvořeny podmínky pro nevracení paměti. Protože je splněna první podmínka v části "Způsobit" objektu X odkazuje na objekt na děti X. Tyto děti patří vazbu cílového a cíl vazby TextBlock prvek. V části "Způsobit" druhou podmínku je splněna, protože vlastnost P není Vlastnost DependencyProperty objektu a objekt X neimplementuje INotifyPropertyChanged rozhraní. Toto chování způsobuje, že UIElementCollection Třída a TextBlock prvek není uvolněna. Navíc StackPanel Kontejner třídy není uvolněna, protože UIElementCollection Třída obsahuje odkaz StackPanel Kontejner třídy. K tomuto chování dochází i v případě, UIElementCollection Třída a TextBlock prvek jsou odebrány z hlavního stromu pomocí následující řádek kódu: VlastnostiID článku: 938416 - Poslední aktualizace: 22. května 2011 - Revize: 3.0
Strojově přeložený článek Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum. Projděte si také anglickou verzi článku:938416
(http://support.microsoft.com/kb/938416/en-us/
)
|




Zpět nahoru








