Tôi đang chạy mã này và nó đang sử dụng một số lượng hợp lý của CPU mặc dù nó đang làm hoàn toàn không có gì hầu hết thời gian.Làm thế nào để chặn một hoạt động cho đến khi một điều kiện được đáp ứng?
while (this.IsListening)
{
while (this.RecievedMessageBuffer.Count > 0)
{
lock (this.RecievedMessageBuffer)
{
this.RecievedMessageBuffer[0].Reconstruct();
this.RecievedMessageBuffer[0].HandleMessage(messageHandler);
this.RecievedMessageBuffer.RemoveAt(0);
}
}
}
Cách tốt nhất để chặn cho đến khi đáp ứng điều kiện là gì?
'Thread.Sleep()'? –
Thread.Sleep() cũng chặn giao diện người dùng. –
@RanhiruCooray no, đó hầu như luôn là câu trả lời * sai *. Có những cấu trúc dành riêng cho công việc này, như WaitHandle do Mark đề xuất. Xem http://stackoverflow.com/questions/9417260/when-is-it-sensible-to-use-thread-sleep –