这种模式似乎对我在这个线程不安全的环境中实现线程锁定有用。
然而,就模式和最佳实践而言(尤其是我自己已经弄清楚了),我对公开两个整理相同结果的集合并不过分生气。但是不安全的集合确实需要公开公开,我不想将其设为私有并使用“AddResult(x)”方法。
这是解决这个问题的正确方法吗?
public class UnsafeObject
{
public ObservableCollection<HighSpeedObject> ResultsUnsafe { get; set; }
/// Accessed by UI thread once every 100ms
public List<HighSpeedObject> Results
{
get
{
lock (_padlock)
{
return ResultsUnsafe.ToList();
}
}
}
private readonly static object _padlock = new object();
}