C# 是否有一些VisualStudio扩展,用于检查代码中潜在的线程不安全性?
是否有一些VisualStudio扩展,用于检查代码中潜在的线程不安全性并标记这段代码?也许ReSharper有这个功能?我知道有两个R#检查 用于C# 是否有一些VisualStudio扩展,用于检查代码中潜在的线程不安全性?,c#,visual-studio,resharper,C#,Visual Studio,Resharper,是否有一些VisualStudio扩展,用于检查代码中潜在的线程不安全性并标记这段代码?也许ReSharper有这个功能?我知道有两个R#检查 用于锁定-语句 public class SometimesNotSynchronizedWarning { private readonly List<string> _list = new List<string>(); private readonly object _lockObj = new object
锁定
-语句
public class SometimesNotSynchronizedWarning
{
private readonly List<string> _list = new List<string>();
private readonly object _lockObj = new object();
public bool Contains(string item)
{
lock (_lockObj)
{
return _list.Contains(item);
}
}
public void Add(string item)
{
// R# warning: "The field is sometimes used inside synchronized block
// and sometimes used without synchronization":
_list.Add(item);
}
}
public class DoubleCheckedLockingWarning
{
private List<string> _instance;
private readonly object _lockObj = new object();
public List<string> GetInstance()
{
if (_instance != null) return _instance;
lock (_lockObj)
if (_instance == null)
// R# warning: "Possible incorrect implementation of Double-Check Locking.
// Checked field must be volatile or assigned from local variable
// after 'Thread.MemoryBarrier()' call":
_instance = new List<string>();
return _instance;
}
}
public类有时不同步警告
{
私有只读列表_List=new List();
私有只读对象_lockObj=新对象();
公共布尔包含(字符串项)
{
锁
{
退货清单包含(项目);
}
}
公共无效添加(字符串项)
{
//R#警告:“该字段有时在同步块内使用
//有时在没有同步的情况下使用”:
_列表。添加(项目);
}
}
用于双重检查锁定实施
public class SometimesNotSynchronizedWarning
{
private readonly List<string> _list = new List<string>();
private readonly object _lockObj = new object();
public bool Contains(string item)
{
lock (_lockObj)
{
return _list.Contains(item);
}
}
public void Add(string item)
{
// R# warning: "The field is sometimes used inside synchronized block
// and sometimes used without synchronization":
_list.Add(item);
}
}
public class DoubleCheckedLockingWarning
{
private List<string> _instance;
private readonly object _lockObj = new object();
public List<string> GetInstance()
{
if (_instance != null) return _instance;
lock (_lockObj)
if (_instance == null)
// R# warning: "Possible incorrect implementation of Double-Check Locking.
// Checked field must be volatile or assigned from local variable
// after 'Thread.MemoryBarrier()' call":
_instance = new List<string>();
return _instance;
}
}
公共类双重检查锁定警告
{
私有列表实例;
私有只读对象_lockObj=新对象();
公共列表GetInstance()
{
if(_instance!=null)返回_instance;
锁
if(_instance==null)
//R#警告:“可能不正确地执行双重检查锁定。
//选中字段必须是可变的或从局部变量赋值
//在“Thread.MemoryBarrier()”调用之后:
_实例=新列表();
返回_实例;
}
}