可以锁定c#中多个对象的工作?

时间:2017-04-19 11:39:16

标签: c# multithreading static locking critical-section

我一直在寻找一种锁定特定代码的方法。

namespace x
{
   public class y
   {
      private Object obj = new Object();
      private void A()
      {
         lock(obj)
         {
            //critical section
         }
      }
   }
}

根据请求,我的应用程序从不同的源(使用Y类)进入方法A,并且可以看到锁定对象无法保护关键部分。

我正在寻找保护关键部分的方法,即使多个对象试图访问这段代码而且我不想使用静态锁定对象。

请帮帮我。

1 个答案:

答案 0 :(得分:2)

Lock执行该任务,但是您锁定了一个实例字段,它将仅针对同一实例保护您的关键部分。如果要锁定所有实例,请将标志(Obj)设为静态。

namespace x 
{ 
    public class y 
    { 
        static private Object obj = new Object();

        private void A() 
        { 
            lock(obj) 
            { 
                //critical section 
            } 
        } 
    } 
}