이 패턴은이 스레드 안전하지 않은 환경에서 스레드 잠금을 달성하기 위해 작동하는 것으로 보입니다.스레드 안전하지 않은 객체에서이 잠금 패턴에 문제가 있습니까?
그러나 패턴 및 모범 사례 (특히 내가 직접 알아 냈으므로)에서 동일한 결과를 대조하는 두 개의 컬렉션을 노출하는 것에 지나치게 화가났습니다. 하지만 안전하지 않은 컬렉션은 공개적으로 노출되어야하며 개인적으로 만들고 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