/// <summary> /// Constructor /// </summary> public MessageThread(ILogger logger, string threadName) { Logger = logger; ThreadName = threadName ?? string.Format("{0}:MessageThread", GetType().Name); _messages = new Queue <object>(); _haveInMessage = new ManualResetEvent(true); _idleLoopSpeed = 250; _exObs = new ExecutionGuard(); }
/// <summary> /// Constructor. /// </summary> /// <param name="pool">The thread pool where threads will be pulled from to execute the message handler.</param> /// <param name="name">A name for this queue. Can be used to determine what message queue is running if more than one queue is running on a threadpool.</param> public MessageQueue(IArrowThreadPool pool, string name) { if (null == pool) { throw new ArgumentNullException("pool"); } _pool = pool; if (null == name) { throw new ArgumentNullException("name"); } Name = name; _messageQueueId = Interlocked.Increment(ref _nextMessageQueueId); _messageQueue = new Queue <MessageObject>(); _notProcessing = true; _guard = new ExecutionGuard(); }