コードインスペクション: フィールドでの同期の不整合性
このコードインスペクションは、ロックの有無にかかわらず使用されるフィールドについて警告し、スレッドの安全性に関する潜在的な問題を検出できます。 以下に例を示します。
public class LockingSample
{
private readonly List<object> _resources = new List<object>();
private readonly object _lockObject = new object();
public void AddResource(object resource)
{
lock (_lockObject)
_resources.Add(resource);
}
public void RemoveResource(object resource)
{
// Warning: The field is sometimes used inside synchronized block
// and sometimes used without synchronization
if (_resources.Contains(resource))
{
_resources.Remove(resource);
}
}
}
インスペクションは、const フィールド上および内部で同期がないプライベートメソッド内ではトリガされませんが、常に同期コンテキストから使用されます。
2026 年 6 月 12 日