

Makale numarası: 938416 - Bu makalenin geçerli olduğu ürünleri görün.
Microsoft Windows Presentation Foundation (WPF) veri bağlama'ı kullandığınızda bellek sızıntısı oluşabilir.
Bu sorun, aşağıdaki koşullar geçerli olursa oluşur:
Bu soruna geçici bir çözüm için aşağıdaki yöntemlerden birini kullanın.
Yöntem 1<a1>Özellik</a1> PDependencyProperty bir nesnesi üzerinden erişebilirsiniz.
Yöntem 2X nesnesini INotifyPropertyChanged arabirimde karşı açık duruma getirmiş olursunuz.
Yöntem 3Veri bağlamada OneTime için ayarlayın.
WPF içinde OneTime özelliği için dinleme gerekir olarak işaretlenmemiş bir veri bağlama işlemi, kaynak nesneyi (X nesnesini) bildirimleri değiştirin. WPF, yerleşik bildirimleri DependencyProperties sınıfının veya bildirimleri INotifyPropertyChanged arabirimden kullanır.
DependencyProperties sınıf ve INotifyPropertyChanged arabirim kullanılamıyorsa, WPF ValueChanged olay kullanır. Bu davranış, P özelliğine denk PropertyDescriptor nesnesinde PropertyDescriptor.AddValueChanged yöntem çağırma içerir. Ne yazık ki, bu eylem, bu PropertyDescriptor nesnenin nesne X güçlü bir başvuru oluşturmak ortak dil çalışma zamanı (CLR) neden olur. CLR, PropertyDescriptor nesnesine başvuru da genel bir tabloda saklar. Bu davranış, aşağıdaki sırayla gerçekleşmesi bir başvuru zinciri neden olur:
WPF, tercih edilen bir bildirim mekanizmalar kullanmak, geçici çözüm yöntem 1 ve yöntem 2'in çözüm neden. Geçici çözüm yöntem 3'ü WPF değişiklik bildirimlerine dinlemek üzere yönlendirir. Tüm üç geçici çözüm yöntemleri arasında PropertyDescriptor nesne başvurusu oluşturmaktan kaçının ve X nesne.
Aşağıdaki kod örneği, sızıntısı koşullarını oluşturulur.
Bu kod örneğinde, P özelliği Count özelliğini temsil eder. Ayrıca, <a1>Nesne</a1> XUIElementCollection sınıfı StackPanel.Children özelliği biçiminde temsil edilir.
"Neden" bölümünde ilk koşulu, çünkü için X nesnesinin alt nesnesi X başvuruyor karşılanır. Bağlama hedef TextBlock öğedir ve bu alt bağlama hedef içerir.
Ikinci bir koşul "Neden" bölümünde, <a1>özellik</a1> PDependencyProperty bir nesne değil ve <a1>Nesne</a1> XINotifyPropertyChanged arabirimini uygulamıyor karşılanır. Bu davranış, UIElementCollection sınıfı ve serbest bırakılacak TextBlock öğe neden olur. UIElementCollection sınıfı, bir başvuru StackPanel kapsayıcı sınıfı içerdiğinden ayrıca StackPanel kapsayıcı sınıfı, serbest bırakılmaz. UIElementCollection sınıfı ve TextBlock öğenin ana ağaçtan code:
Makale numarası: 938416 - Last Review: 26 Temmuz 2007 Perşembe - Gözden geçirme: 1.1
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:938416
(http://support.microsoft.com/kb/938416/en-us/ )


Contact us for more help