Я запускаю этот код, и он использует достаточное количество ЦП, даже если он почти ничего не делает.Как заблокировать операцию до тех пор, пока не будет выполнено условие?
while (this.IsListening)
{
while (this.RecievedMessageBuffer.Count > 0)
{
lock (this.RecievedMessageBuffer)
{
this.RecievedMessageBuffer[0].Reconstruct();
this.RecievedMessageBuffer[0].HandleMessage(messageHandler);
this.RecievedMessageBuffer.RemoveAt(0);
}
}
}
Каков наилучший способ блокировки до тех пор, пока не будет выполнено условие?
'Thread.Sleep()'? –
Thread.Sleep() также блокирует пользовательский интерфейс. –
@ RanhiruCooray нет, это почти всегда * неправильный ответ. Есть структуры, посвященные этой работе, такие как WaitHandle, предложенные Марком. См. Http://stackoverflow.com/questions/9417260/when-is-it-sensible-to-use-thread-sleep –