File d'attente des processus multithread ou des tâches

J'ai une téléphonie de l'application message dans lequel il y a beaucoup beaucoup de messages à traiter.Parce que les ports téléphoniques sont limitées, de sorte que le message sera traité en premier en premier. Chaque message a une drapeau "prendre en compte" qui indique quel est traitée. Il a été initialisé comme le faux bien sûr.

Je veux mettre tous les messages dans une file d'attente puis de les traiter avec plusieurs threads ou des tâches.

    public class MessageQueue
{
public Queue MessageWorkItem { get; set; }
public Messages Message { get; set; }
public MessageQueue()
{
MessageWorkItem = new Queue();
Message = new Messages();
}
public void GetMessageMetaData()
{
try
{
//It is just a test, add only one item into the queue
Message.MessageID = Guid.NewGuid();
Message.NumberToCall = "1111111111";
Message.FacilityID = "3333";
Message.NumberToDial = "2222222222";
Message.CountryCode = "1";
Message.Acknowledge = false;
}
catch (Exception ex)
{
}
}
public void AddingItemToQueue()
{
GetMessageMetaData();
if (!Message.Acknowledge)
{
lock (MessageWorkItem)
{
MessageWorkItem.Enqueue(Message);
}
}
}
}
public class Messages
{
public Guid MessageID { get; set; }
public string NumberToCall { get; set; }
public string FacilityID { get; set; }
public string NumberToDial { get; set; }
public string CountryCode { get; set; }
public bool Acknowledge { get; set; }
}

Maintenant, ma question est comment faire pour retirer l'élément de la file d'attente avec le multithreading.
Pour chaque élément de la file d'attente, je veux exécuter un script.

        public void RunScript(Message item)
{
try
{
PlayMessage(item); 
return;
}
catch (HangupException hex)
{
Log.WriteWithId("Caller Hungup!", hex.Message);
}
catch (Exception ex)
{
Log.WriteException(ex, "Unexpected exception: {0}");
}
}

Ce que je pensais, c'était de voir si

si(MessageWorkItem.Count >= 1)
Puis faire quelque chose mais j'ai besoin de code de l'aide.

Regarder le producteur/consommateur motif (problème) et de réorganiser vous classes. Payer l'attention sur l'appellation.
qui ver de framework que vous utilisez
4 ou .NET 4.5. Selon ce qui est très bien.

OriginalL'auteur | 2014-03-27