Puede alguien explicar por qué esto funciona:c comportamiento # roscado
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);
}
pero si cambio de los tipos de objeto de los objetos de bloqueo a una cadena (como abajo) se produce un error:
String ready_lock = "Hello";
String thread_lock = "Hello";
Ha sido confundiéndome por un tiempo ahora. Gracias :)
¿Cuál es la excepción que está lanzando? –
Buena pregunta ... –
No arroja una excepción (aparte de la falla de Assert), era simplemente que la variable able_to_get_lock devolvía falsa. –