Estoy ejecutando este código y está usando una buena cantidad de CPU a pesar de que no hace absolutamente nada la mayor parte del tiempo.¿Cómo bloquear una operación hasta que se cumpla una condición?
while (this.IsListening)
{
while (this.RecievedMessageBuffer.Count > 0)
{
lock (this.RecievedMessageBuffer)
{
this.RecievedMessageBuffer[0].Reconstruct();
this.RecievedMessageBuffer[0].HandleMessage(messageHandler);
this.RecievedMessageBuffer.RemoveAt(0);
}
}
}
¿Cuál es la mejor manera de bloquear hasta que se cumpla una condición?
'Thread.Sleep()'? –
Thread.Sleep() también bloquea la IU. –
@RanhiruCooray no, esa es casi siempre la respuesta * incorrecta *. Hay estructuras dedicadas a este trabajo, como el WaitHandle sugerido por Mark. Ver http://stackoverflow.com/questions/9417260/when-is-it-sensible-to-use-thread-sleep –