2009-10-05 8 views

Répondre

6

Vous n'écoutez pas. Vous configurez MSMQ Activation pour activer votre composant lorsque les messages arrivent. Le lien a tous les détails dont vous avez besoin, le code et la configuration.

+0

Oui c'était mon premier choix. Regardez ici pour mon autre question. http://stackoverflow.com/questions/1473179/msmq-not-invoking-com –

+0

L'activation COM est le modèle MSMQ 3. Avec MSMQ 4, il existe un nouveau modèle d'activation basé sur Windows Activation Service et WCF. –

+0

Je vais regarder dans les services d'activation. –

2

Comme indiqué précédemment, l'activation de MSMQ est probablement le meilleur moyen, si vous pouvez l'utiliser. Sinon, voici le code que j'ai utilisé:

var ts = new TimeSpan(0, 0, 10); 
MessageQueue q = GetQueue<T>(); 
while (true) 
{ 
    try 
    { 
    Message msg = q.Receive(ts); 
    var t = (T)msg.Body; 
    HandleMessage(t); 
    } 
    catch (MessageQueueException e) 
    { 
    // Test to see if this was just a timeout. 
    // If it was, just continue, there were no msgs waiting 
    // If it wasn't, something horrible may have happened 
    } 
} 
+2

Si vous utilisez la fonction d'énumérateur de message au lieu de Recevoir, vous n'avez pas à vous soucier d'obtenir un délai d'attente lorsque la file d'attente est vide. –

+0

Très bonne consultutah! Je suis absent depuis une semaine et nous savons ce que c'est que d'essayer de revenir à un projet, mais je vais essayer certaines choses. Grauenwolf, pouvez-vous s'il vous plaît poster un court exemple de recevoir? J'ai fait des recherches sur ce sujet et je ne le comprends pas complètement. Surtout après avoir été en vacances pendant plus d'une semaine. Merci .... –

+0

Vous pourriez vouloir indiquer les allées et venues de la méthode 'GetQueue ()'. –

Questions connexes