/// <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); }