我想知道我需要做什么才能使模型在 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,我应该做什么(如果有的话)使所有这些线程安全?
现在,如果我想做类似的事情但使用 type 的属性Dictionary<>
,或者ObservableCollection<>
?哪些成员(添加、删除、清除、索引器)是线程安全的?我应该改用 ConcurrentDictionary 吗?