Artikel-ID: 938416 - Geändert am: Donnerstag, 26. Juli 2007 - Version: 1.1 Bei Verwendung von Datenbindung in WPF kann ein Speicherverlust auftreten
Auf dieser SeiteProblembeschreibungWenn Sie die Datenbindung in Microsoft Windows Presentation Foundation (WPF) verwenden, kann ein Speicherverlust auftreten. UrsacheDieses Problem tritt auf, wenn folgenden Bedingungen erfüllt sind:
AbhilfeWenden Sie eines der folgenden Verfahren an, um dieses Problem zu umgehen. Methode 1Greifen Sie über ein DependencyProperty -Objekt Eigenschaft P auf.Methode 2Machen Sie die INotifyPropertyChanged -Schnittstelle auf Objekt X verfügbar.Methode 3Legen Sie den Modus von der Datenbindung auf OneTime .StatusEs handelt sich hierbei um ein beabsichtigtes Verhalten. Weitere InformationenIn WPF Änderungsbenachrichtigungen Datenbindungsoperation, die als OneTime für Eigenschaft überwachen muss nicht gekennzeichnet ist aus dem Quellobjekt (X-Objekt). WPF verwendet die integrierten Benachrichtigungen der DependencyProperties -Klasse oder die Benachrichtigungen von der INotifyPropertyChanged -Schnittstelle. Wenn die DependencyProperties -Klasse und die INotifyPropertyChanged -Schnittstelle verfügbar sind, verwendet WPF das ValueChanged -Ereignis. Dies umfasst das Aufrufen der PropertyDescriptor.AddValueChanged -Methode für das PropertyDescriptor -Objekt, das Eigenschaft P entspricht. Leider wird dieses Aktion die common Language Runtime (CLR) um einen starken Verweis von diesem PropertyDescriptor Objekt zu Objekt X erstellen. Die CLR behält auch einen Verweis auf das PropertyDescriptor -Objekt in eine globale Tabelle. Dieses Verhalten führt eine Kette Verweis in der folgenden Reihenfolge auftreten:
Problemumgehung Methode 1 und Problemumgehung Methode 2 führen WPF eines bevorzugten Benachrichtigungsmechanismen verwenden. Problemumgehung Methode 3 weist WPF nicht zur Überwachung von Änderungsbenachrichtigungen. Alle drei Problemumgehung Methoden vermeiden Bezug zwischen den PropertyDescriptor -Objekt erstellen und X-Objekt. Im folgenden Codebeispiel die Bedingungen für den Speicherverlust erstellt, sind. Die erste Bedingung in Abschnitt "Ursache" ist erfüllt, da Objekt X auf die untergeordneten Elemente des Objekt X verweist. Diese untergeordneten Elemente enthalten das Bindungsziel, und das Bindungsziel ist TextBlock -Element. Die zweite Bedingung in den Abschnitt "Ursache" ist erfüllt, da Eigenschaft P kein DependencyProperty -Objekt ist und Objekt X nicht die INotifyPropertyChanged -Schnittstelle implementiert. Dieses Verhalten führt die UIElementCollection -Klasse und das TextBlock -Element nicht freigegeben werden. Die StackPanel -Container-Klasse wird außerdem nicht freigegeben, da die UIElementCollection -Klasse einen Verweis auf die StackPanel -Container-Klasse enthält. Dieses Verhalten tritt selbst dann, wenn die UIElementCollection -Klasse und der TextBlock -Element aus der Hauptstruktur entfernt werden mithilfe des code:
Maschinell übersetzter ArtikelWichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten. Den englischen Originalartikel können Sie über folgenden Link abrufen: 938416
(http://support.microsoft.com/kb/938416/en-us/
)
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
| Weitere Ressourcen Weitere SupportseitenCommunitySPRACHE AUSWÄHLEN |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Zum Anfang