Eigenschaft Metadaten sind bereits für die Eigenschaft "Timeline" registriert

8

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%     
Sathyanarayanan 03.01.2014, 05:53
quelle

1 Antwort

19

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%     
Rohit Vats 03.01.2014 05:56
quelle

Tags und Links