Eigenschaften und Metadaten ist bereits registriert "Timeline" - Eigenschaft
Ich habe eine WPF-Anwendung, die aufgerufen wird, die von einer client-software. Es funktioniert gut für das 1. mal.Wenn ich Schloss die WPF-Anwendung aus der client-software und erneut laden Sie die WPF-Anwendung(ohne schließen der client-software in zwischen)), wirft es eine Ausnahme, da "Property-Metadaten ist bereits registriert "Timeline" Eigentum" für den folgenden code:
Timeline.DesiredFrameRateProperty.OverrideMetadata(typeof(Timeline),
new FrameworkPropertyMetadata { DefaultValue = 5 });
Und dann, ich kommentierte die oben genannten Zeile code aus meiner app und wieder wiederholt sich das gleiche Szenario, das ich oben erwähnt habe, wirft Sie eine Ausnahme, wie "Der Anrufer thread nicht Zugriff auf dieses Objekt, da in einem anderen thread owns it" in Run().
Unten ist die Methode, die ich benutze, Timeline-Eigenschaft in meiner WPF-Anwendung.
public void start()
{
Timeline.DesiredFrameRateProperty.OverrideMetadata(typeof(Timeline),
new FrameworkPropertyMetadata { DefaultValue = 5 });
//Property Metadata is already registered for the "Timeline" property.
Run();
//The caller thread cannot access this object because a different thread owns it.
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie überschreiben von Metadaten in statischen Konstruktor immer . Sie brauchen nicht zu überschreiben, mit jeder Instanz oder Methode.
Bewegen Sie diesen code in statischen Konstruktor der Klasse:
Vom MSDN:
Lesen Sie hier mehr - Gewusst wie: überschreiben der Metadaten?
Du nicht ändern, UI-Sachen von hintergrund-thread, legte es auf UI-dispatcher wie diese:
Run
Methode aus hintergrund-thread?