我在C#应用程序中调用依赖属性(DP)来更新Graphics(基于DirectX)。 错误的是,我在视图模型中从同一个函数调用了两次。
public List<IObj> ModifiedData
{
get
{
return modifiedData;
}
set
{
if (modifiedData != value)
{
modifiedData = value;
RaisePropertyChanged(() => this.ModifiedData);
}
}
}
第一个是调用没有在目标端(图形)触发DP处理程序。
以下是DP处理程序:
public static DependencyProperty ModifiedDataProperty = DependencyProperty.Register(
"ModifiedData",
typeof(List<IObj>),
typeof(MyRenderer),
new PropertyMetadata(new PropertyChangedCallback(OnModifiedDataUpdated)));
public List<IObj> ModifiedData
{
get{ return (List<IObj>)this.GetValue(ModifiedDataProperty); }
set{ this.SetValue(ModifiedDataProperty, value); }
}
private static void OnModifiedDataUpdated(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// Do work - but this is not called !
}
然后我注释掉第二个电话(这是不必要的)并且第一个电话开始工作。 如果系统接到第二个电话,似乎第一个呼叫被中断了!
所以我的问题是,如果在很短的时间间隔内调用两次依赖属性/属性处理程序,它应该如何工作?