Comment faire pour bloquer une opération jusqu'à ce qu'une condition est remplie?

Je suis en cours d'exécution du présent code et c'est à l'aide d'une bonne quantité de CPU, même si elle est en train de faire rien-absolument rien la plupart du temps.

while (this.IsListening)
{
    while (this.RecievedMessageBuffer.Count > 0)
    {
        lock (this.RecievedMessageBuffer)
        {
            this.RecievedMessageBuffer[0].Reconstruct();
            this.RecievedMessageBuffer[0].HandleMessage(messageHandler);
            this.RecievedMessageBuffer.RemoveAt(0);
        }
    }
}

Quelle est la meilleure façon de bloquer jusqu'à ce qu'une condition est remplie?

InformationsquelleAutor MJLaukala | 2012-06-11