代码检查:在同步原语上可疑的锁定。
此检查会报告使用同步原语(如 SemaphoreSlim、 ManualResetEvent 或 ReaderWriterLockSlim )作为锁对象的 lock 语句。 在这些对象上加锁是可疑的,因为它们本身已有同步语义。 与它们混用 lock 可能令人困惑,并且会掩盖线程错误。
示例
using System.Threading;
class C
{
private readonly SemaphoreSlim myGate = new(1, 1);
void M()
{
lock (myGate)
{
DoWork();
}
}
}
using System.Threading;
class C
{
private readonly object myLock = new();
void M()
{
lock (myLock)
{
DoWork();
}
}
}
2026年 5月 8日