我有其在多個線程共享單例類。爲了防止多重訪問問題,我在訪問類的一個或另一個屬性時使用Lock方法。問題是可以改進代碼並將Lock方法放入單例類中,而不是每次在代碼中訪問類屬性時都放入它。Singleton類中的多線程應用程序,鎖定建議
/* Class code*/
public class ServerStatus
{
private static ServerStatus _instance;
public static ServerStatus Instance
{
get { return _instance ?? (_instance = new ServerStatus()); }
set { _instance = value; }
}
ServerStatus()
{
PistonCount = 0;
PistonQueue = new List<string>();
ErrorList = new List<string>();
}
public int PistonCount { get; set; }
public List<string> PistonQueue { get; set; }
public List<string> ErrorList { get; set; }
}
/*Code for accessing class properties*/
private static readonly object Locker = new object();
/*Skip*/
lock (Locker)
{
ServerStatus.Instance.PistonQueue.Add(e.FullPath);
}
/*Skip*/
lock (Locker)
{
ServerStatus.Instance.PistonCount++;
}
+1這就是我也終於向他暗示,但你描述得更好! – Dummy01