オブジェクトのプロパティを更新する foreach ループを取得しました。このプロパティには依存関係があり、セッターで更新します。依存関係には時間がかかり、foreach ループの後に一度だけ更新する必要があるため、これによりアプリケーションが遅くなるようです。
コード内の他の多くの場所でセッターが使用されているため、ループの後に依存関係の更新を呼び出すことはお勧めしません。それを超えて、オブジェクトは、呼び出し元の関数ではなく、依存関係を更新する責任を負う必要があります。
わかりやすくするためのコード例
//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
ありますが、このような用途に使用できますか?