试图在锁内执行代码

时间:2015-03-19 00:18:28

标签: c# multithreading mutex

我有一个看起来像这样的功能

 public void DoSomething(){
     var lockThis = new Object();
     lock(lockThis){
        //trying to step through code
     }
 }

所以我在lock(lockThis){...}中放置了一个断点。理论上,一次只有一个线程处于临界区,但我不能单步执行?它在其中的第一行代码中断,并且它一直在同一条线上。断点的行为就像锁外一样。

编辑:我应该描述环境。该类和方法属于中间层DLL。该方法由ASP.NET应用程序中的Web服务调用。我正在对webservice进行压力测试,它会生成调用上述方法的多个线程。

1 个答案:

答案 0 :(得分:2)

您的Lock对象应该在不同的线程之间共享,在这种情况下,您为每个线程创建单个实例并调用。

Object lockThis = new Object();

或(取决于您的代码)

static Obejct lockThis = new Object();
public void DoSomething()
{

   lock(lockThis)
   {
      //trying to step through code
   }
}