bất cứ ai có thể giải thích lý do tại sao công trình này:c hành vi # luồng
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);
}
nhưng nếu tôi thay đổi loại đối tượng của các đối tượng khóa vào một String (như dưới đây) nó không thành công:
String ready_lock = "Hello";
String thread_lock = "Hello";
Đã làm tôi bối rối một lúc. Cảm ơn :)
gì được ngoại trừ nó được ném? –
Câu hỏi hay .. –
Nó không ném một ngoại lệ (ngoài Assert thất bại), nó chỉ đơn giản là biến sports_to_get_lock trả về false. –