2
此模式似乎正在爲我在此線程不安全環境中實現線程鎖定而工作。但是在模式和最佳實踐方面(尤其是我自己已經想清楚了),我並沒有過度暴露兩個收集相同結果的集合。但是不安全的集合需要公開地公開暴露,我不想將其隱藏起來並具有「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();
}
鎖定會導致併發操作序列化。 – Oded 2013-02-17 21:57:32