Exemple #1
0
        /// <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();
        }
Exemple #2
0
        /// <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();
        }