Ich benutze diesen Code und es ist eine Menge CPU, obwohl es die meiste Zeit absolut nichts tut.Wie blockiere ich einen Vorgang, bis eine Bedingung erfüllt ist?
while (this.IsListening)
{
while (this.RecievedMessageBuffer.Count > 0)
{
lock (this.RecievedMessageBuffer)
{
this.RecievedMessageBuffer[0].Reconstruct();
this.RecievedMessageBuffer[0].HandleMessage(messageHandler);
this.RecievedMessageBuffer.RemoveAt(0);
}
}
}
Was ist der beste Weg zu blockieren, bis eine Bedingung erfüllt ist?
'Thread.Sleep()'? –
Thread.Sleep() blockiert auch die Benutzeroberfläche. –
@RanhiruCooray nein, das ist fast immer die * falsche * Antwort. Es gibt Strukturen, die diesem Job gewidmet sind, wie der von Mark vorgeschlagene WaitHandle. Siehe http://stackoverflow.com/questions/9417260/when-is-it-sensible-to-use-thread-sleep –