2015-03-19 56 views
0

内通过代码步我有一个看起来像这样试图锁定

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

所以我把锁(lockThis)内的断点功能{...}。理论上,一次只有一个线程处于关键部分,但是我不能跨过?它在其内部的第一行代码处中断,并且保持同一行。断点与锁之外的行为一样。

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

+0

每个线程正试图锁定一个不同的对象。两个线程不能同时锁定同一个锁,但这些是不同的锁。 – 2015-03-19 00:43:38

回答

2

你锁定的对象应该是不同的线程之间共享,在这种情况下,您为每个线程创建一个实例,并call.`

Object lockThis = new Object(); 

或(取决于您的代码)

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

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

我试过你的第二个解决方案。它仍然表现相同。我编辑了这篇文章,描述了我的环境。 – user79284 2015-03-19 00:40:42

+0

正如我所说,你应该使用相同的对象实例进行锁定,我不知道你如何使用这种方法。你是否使用同一个类的实例或每次创建一个新实例? – Peyman 2015-03-19 00:45:15

+0

第二个意思是静态物体? – Peyman 2015-03-19 00:46:03

相关问题