Entfernen von Objekten aus einer ConcurrentQueue in C #

Hey, ich versuche, eine ConcurrentQueue in C # für einen asynchronen Server zu implementieren. Artikel werden in die Warteschlange gestellt, sobald eine vollständige Nachricht eingegangen ist. Um Nachrichten aus der Warteschlange zu entfernen, erstelle ich eine kleine Anzahl von Threads, um die Anforderungen aus der Warteschlange zu entfernen und zu bearbeiten. Dies ist nicht ausreichend, da jeder Thread aus offensichtlichen Gründen eine while-Schleife verwendet, die ziemlich viel Prozessorzeit beanspruch

Wäre jemand über eine Methode zum Entfernen von Nachrichten informiert, die bei Bedarf erforderlich ist, aber nicht so viel Verarbeitungszeit beansprucht?

{
    ...

    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);
        }
    }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage