Ich habe eine WPF-Anwendung, die von einer Client-Software aufgerufen wird. Es funktioniert zum ersten Mal. Wenn ich die WPF-Anwendung von der Client-Software geschlossen und erneut die WPF-Anwendung geladen habe (ohne die Client-Software dazwischen zu schließen), wird eine Ausnahme ausgelöst, da "Eigenschaftsmetadaten bereits für die Zeitleiste registriert ist". Eigenschaft "für den folgenden Code:
%Vor%Und dann habe ich die obige Codezeile von meiner App kommentiert und habe das gleiche Szenario, das ich oben erwähnt habe, wiederholt, es wirft eine Ausnahme wie "Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, weil ein anderer Thread es besitzt" in Run ( ).
Unten ist die Methode, die ich Timeline-Eigenschaft in meiner WPF-Anwendung verwende.
%Vor%Sie sollten Metadaten im statischen Konstruktor immer überschreiben . Sie müssen nicht mit jeder Instanz oder Methode überschreiben.
Verschieben Sie diesen Code im statischen Konstruktor Ihrer Klasse:
%Vor%Von MSDN :
Das Überschreiben von Metadaten für eine Abhängigkeitseigenschaft muss vorher erfolgen Diese Eigenschaft wird vom Immobiliensystem verwendet (dies entspricht zu der Zeit, dass bestimmte Instanzen von Objekten, die die registrieren Eigenschaft wird instanziiert). Aufrufe von OverrideMetadata müssen sein Wird in den statischen Konstruktoren des angegebenen Typs ausgeführt selbst als forType-Parameter von OverrideMetadata.
Lesen Sie hier mehr - Wie überschreiben Sie Metadaten?
Sie können UI-Objekte nicht aus dem Hintergrundthread ändern, setzen Sie sie wie folgt auf UI-Dispatcher:
%Vor%Tags und Links wpf multithreading timeline