我有一个 foreach 循环,在其中更新对象的属性。这个属性有一个依赖项,我在 setter 中更新它。这似乎减慢了我的应用程序,因为依赖项需要一些时间,并且在 foreach 循环之后只需更新一次。
不建议在循环后调用依赖的更新,因为我的代码中很多其他地方都用到了setter。除此之外,对象应该负责更新它的依赖而不是调用函数。
为清楚起见的代码示例
//anywhere else in my other classes
private Foo[] objects;
public void UpdateFoo()
{
//update propably hundrets of small objects
foreach (Foo obj in objects)
{
obj.Property = 1;
}
}
class Foo
{
private int _property;
public int Property
{
get { return _property; }
set
{
_property = value;
//Update something anywhere else
StaticBigFoo.Update();
} }
}
class StaticBigFoo
{
public static void Update()
{
//do something longer
}
}
我想知道这个场景的最佳实践是什么?
- 我可以使用a
DependencyProperty
,它是PropertyChanged-Callback,但是每次仍然会更新依赖项。 - 我想过在 Dispatcher 中启动一些东西,
DispatcherPriority.Background
并为不同的代表过滤它(但是如何?) - 我可以使用一些事务逻辑,但我不知道在那里使用什么。我读了一些关于的东西
TransactionScope
,我可以用它来做这样的事情吗?