任何人都可以解释为什么这个工程:C#线程行为
Object ready_lock = new Object();
Object thread_lock = new Object();
public static bool able_to_get_lock = false;
public void GetThreadLock()
{
if (Monitor.TryEnter(thread_lock,2))
{
able_to_get_lock = true;
}
}
[TestMethod]
public void ThreadingModelTest()
{
Monitor.Enter(ready_lock);
Thread t1 = new Thread(new ThreadStart(GetThreadLock));
t1.Start();
Thread.Sleep(400);
Assert.IsTrue(able_to_get_lock);
}
,但如果我改变的对象类型锁定对象的一个String(如下)失败:
String ready_lock = "Hello";
String thread_lock = "Hello";
它已经现在让我困惑一阵子。谢谢:)
什么是例外,它是扔? – 2010-08-10 13:33:47
不错的问题.. – 2010-08-10 13:37:24
它不会抛出一个异常(除了Assert失败),它只是简单的说就是able_to_get_lock变量返回false。 – 2010-08-10 13:46:26