Example #1
0
        /// <summary>
        /// Dequeue Message
        /// </summary>
        /// <param name="ptr"></param>
        /// <param name="transactional"></param>
        /// <returns></returns>
        private IQueueItem DequeueScop(Ptr ptr, bool transactional = false)
        {
            IQueueItem item = null;

            if (transactional)
            {
                using (TransactionScope scope = TransHelper.GetTransactionScope())
                {
                    //Transaction.Current.TransactionCompleted += new TransactionCompletedEventHandler(Current_TransactionCompleted);

                    TryDequeue(ptr, out item);

                    if (item != null)
                    {
                        ((QueueItem)item).SetState(MessageState.Receiving);
                        //item.Status = ItemState.Dequeue;
                        //((QueueItem)item).SetSentTime();


                        if (MessageReceived != null)
                        {
                            OnMessageReceived(new QueueItemEventArgs(item, MessageState.Receiving));
                        }
                    }

                    scope.Complete();
                }
            }
            else
            {
                TryDequeue(ptr, out item);

                if (item != null)
                {
                    ((QueueItem)item).SetState(MessageState.Receiving);
                    //item.Status = ItemState.Dequeue;
                    //((QueueItem)item).SetSentTime();

                    if (MessageReceived != null)
                    {
                        OnMessageReceived(new QueueItemEventArgs(item, MessageState.Receiving));
                    }
                }
            }

            return(item);
        }