【发布时间】:2013-05-31 07:09:47
【问题描述】:
我有一个 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
}
}
我想知道这个场景的最佳做法是什么?
- 我可以使用
DependencyProperty,它是PropertyChanged-Callback,但是每次仍然会更新依赖项。 - 我曾想过在 Dispatcher 中使用
DispatcherPriority.Background开始一些东西,然后过滤它以区分不同的代表(但如何?) - 我可以使用一些事务逻辑,但我不知道在那里使用什么。我读过一些关于
TransactionScope的文章,我可以用它来做类似的事情吗?
【问题讨论】: