我在这里讨论的问题基本相同:http: //khason.net/blog/dependency-property-getters-and-setters-in-multithreaded-environment/
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);
}
如果从后台线程调用标记为“<<<<<”的行,Silverlight 会引发 InvalidOperationException,我的应用程序可能会死锁。
不幸的是,博客文章中的解决方案不起作用,因为 Dispatcher 类的 Silverlight 版本隐藏了同步的 Invoke 方法——只有 BeginInvoke 被标记为 public。