2009-10-05 5 views

ответ

6

Вы не слушаете. Вы настраиваете MSMQ Activation для активации вашего компонента при поступлении сообщений. Ссылка содержит всю необходимую информацию, код и конфигурацию.

+0

Да, это был мой первый выбор. Послушайте здесь мой другой вопрос. http://stackoverflow.com/questions/1473179/msmq-not-invoking-com –

+0

Активация COM - это модель MSMQ 3. С MSMQ 4 появилась новая модель активации, основанная на Windows Activation Service и WCF. –

+0

Я изучу службы активации. –

2

Как было сказано ранее, активация MSMQ, вероятно, является лучшим способом, если вы можете использовать это. В качестве альтернативы, вот код, который я использовал:

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

Если вы используете функцию перечислителя сообщений вместо Receive, вам не нужно беспокоиться о получении тайм-аутов, когда очередь пуста. –

+0

Очень хорошие консультации! Я проработал неделю, и мы знаем, что это такое, как пытаться вернуться в проект, но я попробую кое-что. Grauenwolf, не могли бы вы привести краткий пример получения? Я исследовал это, и я не совсем понимаю это. Особенно после отпуска в течение недели. Спасибо .... –

+0

Возможно, вы захотите упомянуть о местонахождении метода 'GetQueue ()'. –

Смежные вопросы