このパターンは、このスレッドセーフでない環境でスレッドロックを実現するために機能しているようです。
ただし、パターンとベストプラクティスの観点から(特に自分で理解したので)、同じ結果を照合する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();
}