コード例 #1
0
        /// <summary>
        /// Does the actual send of a message to a queue
        /// </summary>
        /// <param name="item">Work item to send</param>
        /// <param name="transactional">True if we need a transactional send</param>
        private void DoSend(MsmqSendWorkItem item, bool transactional)
        {
            TraceUtil.WriteInfo("MsmqSendActivity::DoSend({0})", item.Queue);
             using ( MessageQueue queue = new MessageQueue(item.Queue) )
             {
            MessageQueueTransactionType txType = MessageQueueTransactionType.None;
            if ( transactional )
               txType = MessageQueueTransactionType.Automatic;

            queue.Send(item.Message, txType);
             }
        }
コード例 #2
0
        /// <summary>
        /// Executes the activity
        /// </summary>
        /// <param name="context">Execution Context</param>
        /// <returns>The activity Status</returns>
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext context)
        {
            if ( context == null )
            throw new ArgumentNullException("context");

             TraceUtil.WriteInfo("MsmqSendActivity::Execute()");

             if ( this.MessageToSend != null )
             {
            Message message = new Message();
            message.Label = Label;
            WriteMessageBody(message);
            MsmqSendWorkItem item = new MsmqSendWorkItem(Queue, message);

            if ( IsTransactionalQueue )
            {
               WorkflowEnvironment.WorkBatch.Add(this, item);
            } else
            {
               DoSend(item, false);
            }
             }
             return ActivityExecutionStatus.Closed;
        }