Singleton Class в многопоточном приложении, предложение блокировки

У меня есть одноэлементный класс, который используется в нескольких потоках. Для предотвращения проблем с множественным доступом я использую метод Lock при доступе к тому или иному свойству класса. Возникает вопрос, можно ли улучшить код и поместить метод Lock в одноэлементный класс вместо того, чтобы помещать его каждый раз, когда к свойству класса обращаются в коде?

/* 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++;
}
7
задан Shamim Hafiz 22 June 2011 в 12:25
поделиться