Ich habe im Wesentlichen das gleiche Problem hier diskutiert: http://khason.net/blog/dependency-property-getters-and-setters-in-multithreaded-environment/Wie erhält man eine Silverlight-Abhängigkeitseigenschaft, wenn sie nicht im UI-Thread ist?
public static readonly DependencyProperty MyPropertyProperty =
DependencyProperty.RegisterAttached("MyProperty", typeof(bool),
typeof(MyObject), new PropertyMetadata(new PropertyChangedCallback(OnMyPropertyChanged)));
public static bool GetMyProperty(DependencyObject obj)
{
return (bool)obj.GetValue(MyPropertyProperty); <<<<<
}
public static void SetMyProperty(DependencyObject obj, bool value)
{
obj.SetValue(MyPropertyProperty, value);
}
Wenn die Zeile „< < < < <“ gekennzeichnet von einem Hintergrund-Thread aufgerufen wird, wirft Silverlight eine InvalidOperationException und meine App wird wahrscheinlich Deadlock.
Leider funktioniert die Lösung aus dem Blogpost nicht, da die Silverlight-Version der Dispatcher-Klasse die synchronisierten Invoke-Methoden ausblendet - nur BeginInvoke wird als öffentlich markiert.
Arbeitete perfekt, danke. –