Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Tarayıcınız desteklenmiyor

Siteyi kullanmak için tarayıcınızı güncelleştirmeniz gerekir.

Internet Explorer'ın en son sürümüne güncelleştirin

Windows Presentation Foundation veri bağlantısı'nı kullandığınızda bellek sızıntısı oluşabilir

Ö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
Belirtiler
Microsoft Windows Presentation Foundation (WPF) veri bağlama'ı kullandığınızda bellek sızıntısı oluşabilir.
Neden
Bu sorun, aşağıdaki koşullar geçerli olursa oluşur:
  • Veri bağlama yolu PX nesnesinin özelliğine başvuruyor.
  • X nesnesini, doğrudan bir başvuru ya da hedef veri bağlama işlemi, dolaylı bir başvuru içerir.
  • <a1>Özellik</a1> PDependencyProperty bir nesne veya Propertyınfo nesnesi yerine bir PropertyDescriptor nesnesi yoluyla erişilir.
Pratik Çözüm
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 2

X nesnesini INotifyPropertyChanged arabirimde karşı açık duruma getirmiş olursunuz.

Yöntem 3

Veri bağlamada OneTime için ayarlayın.
Durum
Bu davranış tasarım yüzündendir.
Daha fazla bilgi
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:
  1. Genel bir tablo
  2. PropertyDescriptor nesnesi
  3. Object X
  4. Veri bağlamada hedef

    Not <a1>Nesne</a1> X veri bağlama hedef arasındaki başvuru, "Neden" bölümünde listelenen ilk koşulu nedeniyle oluşur.
  5. Bağlama
Veri bağlama hedef kullanılan sürece, bağlama için değişikliklerini devam etmeniz gerekir. Bu davranış, başvuru PropertyDescriptor nesne arasında Canlı tutar ve X nesnesini ve hedef kullanımda kalır. Bu davranış, X nesnesini ve her nesnenin bir X hangi nesnesine başvuruyor bellek sızıntısına neden oluyor. Bu nesneler, veri bağlama hedef içerir.

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.
<Label Name="MyLabel">   <Stack Panel Name="MyStackPanel">      <TextBlock Text="{Binding ElementName=MyStackPanel, Path=Children.Count}" />   </StackPanel></Label>
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:
MyLabel.Content = <Some New Content>;

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 938416 - Son İnceleme: 07/26/2007 16:07:51 - Düzeltme: 1.1

  • Microsoft .NET Framework 3.0
  • kbmt kbtshoot kbprb KB938416 KbMttr
Geri bildirim
n.protocol) + "//c.microsoft.com/ms.js'><\/script>");