Mercurial > silverbladetech
view Messaging/Server/Listeners/MsmqListener.cs @ 30:8d574f2d4174
Cleaned up client
author | adminsh@apollo |
---|---|
date | Wed, 21 Mar 2012 22:26:48 +0000 |
parents | 9919ee227c93 |
children | 7d9de5746f18 |
line wrap: on
line source
using System; using System.Messaging; using Common.Messages; using GalaSoft.MvvmLight.Messaging; using Server.Interfaces; namespace Server.Listeners { public class MsmqListener : IListener { public bool IsListening { get; set; } private readonly MessageQueue _mq; public MsmqListener(string queueName) { _mq = MessageQueue.Exists(queueName) ? new MessageQueue(queueName) : MessageQueue.Create(queueName); _mq.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) }); } public void Start() { if (IsListening) return; Messenger.Default.Send(new MsmqLogMessage() { Body = "Opening listener..." }); IsListening = true; while (IsListening) { try { var message = _mq.Receive().Body; Messenger.Default.Send(new MsmqClientMessage()); } catch (MessageQueueException mqe) { Messenger.Default.Send(new MsmqLogMessage() { Body = mqe.Message }); } catch (Exception e) { Messenger.Default.Send(new MsmqLogMessage() { Body = e.Message }); } } } public void Stop() { if (!IsListening) return; Messenger.Default.Send(new MsmqLogMessage() { Body = "Closing listener..." }); _mq.Close(); IsListening = false; Messenger.Default.Send(new MsmqLogMessage() { Body = "Closed." }); } } }