特にコレクションの単純なプロパティにアクセスするときにロックすることには、何か利点や害があります.Count
か?(これは推奨されるか、推奨されないか、または少しでも問題ではありませんか?)(もちろん、書き込みまたは読み取りでロックする必要があります)
private Dictionary<string, bool> database = new Dictionary<string, bool>();
private object databaseLock = new object();
public int Count
{
get
{
lock (databaseLock)
{
return database.Count;
}
}
}
個人的には、実際の理由ではなく、辞書へのアクセスをロックする必要があるという慣習を打ち破るのが賢明だと思います[*]。また、アクセスしているプロパティに関係なく、予想よりも多くの操作が行われる可能性もあります。
[*] C#の(ほとんどの)コレクションでCount
は、はそれによって維持される整数であるため、常に不可分操作である必要があることを知っています