Dequeueing objets d'un ConcurrentQueue en C #

Hey, je suis en train de mettre en œuvre un ConcurrentQueue en C# pour un serveur asynchrones. Les éléments sont mis en file d'attente dès qu'un message est reçu. À la file d'attente de messages, je fais un petit nombre de threads pour faire le travail de dequeueing et traite les requêtes. C'est insuffisante comme chaque thread est à l'aide d'une boucle while, qui consomme plutôt une grande quantité de temps processeur, pour des raisons évidentes.

Serait ce que quelqu'un sait d'une méthode de dequeueing messages lorsque requis, mais ne consomme pas autant de temps de traitement.

{
    ...

    for (int i = 0; i < 3; i++)
    {
        Thread t = new Thread(new ThreadStart(startParsingMessages));
        t.Start();
    }

    ...
}

private void startParsingMessages()
{
    QueueContainer dequeued = null;
    Console.WriteLine("Trying");
    while (true)
    {
        if (queue.TryDequeue(out dequeued))
        {
            Console.WriteLine("processing queue");
            ProcessMessage(dequeued.socket, dequeued.message);
        }
    }
}

source d'informationauteur user352891