MVVMでモデルをスレッドセーフにするために何をする必要があるのか疑問に思っています。シングルトンとしてインスタンス化される次のクラスがあるとします。
public class RunningTotal: INotifyPropertyChange
{
private int _total;
public int Total
{
get { return _total; }
set
{
_total = value;
PropertyChanged("Total");
}
}
...etc...
}
私のビューモデルは、プロパティを介してそれを公開します:
public RunningTotal RunningTotal { get; }
そして、私のビューにはテキストブロックがバインドされてい{Binding Path=RunningTotal.Total}
ます。
私のアプリには、Totalの値を定期的に更新するバックグラウンドスレッドがあります。Totalを更新するものが他にないと仮定すると、このすべてをスレッドセーフにするために(もしあれば)何をすべきですか?
さて、私が似たようなことをしたいが、タイプDictionary<>
、またはのプロパティを使用したい場合はどうなりObservableCollection<>
ますか?どのメンバー(追加、削除、クリア、インデクサー)がスレッドセーフですか?代わりにConcurrentDictionaryを使用する必要がありますか?