当前位置: 首页>>代码示例>>C#>>正文


C# MessageQueue.Dispose方法代码示例

本文整理汇总了C#中System.Messaging.MessageQueue.Dispose方法的典型用法代码示例。如果您正苦于以下问题:C# MessageQueue.Dispose方法的具体用法?C# MessageQueue.Dispose怎么用?C# MessageQueue.Dispose使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Messaging.MessageQueue的用法示例。


在下文中一共展示了MessageQueue.Dispose方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: WriteReadMessage

        public void WriteReadMessage()
        {
            var ids = new List<string>();
            var mq = new MessageQueue(@".\private$\QMM_");

            
            mq.Send("12345");
            mq.Send("23456");

            var msg = mq.Receive(new TimeSpan(0, 0, 0, 0, 1));
            if (msg != null)
                Console.WriteLine(msg.Body);

            mq.Dispose();
            mq = null;

            mq = new MessageQueue(@".\private$\QMM_");
            
            msg = mq.Receive(new TimeSpan(0, 0, 0, 0, 1));
            if (msg != null)
            {
                msg.Formatter = new XmlMessageFormatter(new Type[] {typeof (string)});
                Console.WriteLine(msg.Body);
            }
        }
开发者ID:RickStrahl,项目名称:Westwind.QueueMessageManager,代码行数:25,代码来源:MsMqTests.cs

示例2: HandleError

        public static void HandleError(MsmqPoisonMessageException error)
        {
            ProcessorQueue processorQueue = (ProcessorQueue)error.Data["processorQueue"];
            MessageQueue poisonQueue = new System.Messaging.MessageQueue(processorQueue.PoisonQueue);
            MessageQueue errorQueue = new System.Messaging.MessageQueue(processorQueue.ErrorQueue);

            using (TransactionScope txScope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                try
                {
                    // Send the message to the poison and error message queues.
                    poisonQueue.Send((IWorkflowMessage)error.Data["message"], MessageQueueTransactionType.Automatic);
                    errorQueue.Send((WorkflowErrorMessage)error.Data["errorMessage"], MessageQueueTransactionType.Automatic);
                    txScope.Complete();
                }
                catch (InvalidOperationException)
                {

                }
                finally
                {
                    poisonQueue.Dispose();
                    errorQueue.Dispose();
                }
            }
        }
开发者ID:invertedsoftware,项目名称:Inverted-Software-Workflow-Engine,代码行数:26,代码来源:QueueOperationsHandler.cs

示例3: StringMessageFormatter

        public void StringMessageFormatter()
        {
            var ids = new List<string>();
            var mq = new MessageQueue(@".\private$\QMM_");

            mq.Formatter = new StringMessageFormatter();
            mq.Send("12345");
            mq.Send("23456");

            mq.Dispose();
            mq = null;

            mq = new MessageQueue(@".\private$\QMM_");

            for (int i = 0; i < 3; i++)
            {
                Message msg = null;
                try
                {
                    msg = mq.Receive(new TimeSpan(0, 0, 0, 0, 1));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                if (msg != null)
                {
                    msg.Formatter = new StringMessageFormatter();
                    Console.WriteLine(msg.Body);
                }
            }
        }
开发者ID:RickStrahl,项目名称:Westwind.QueueMessageManager,代码行数:33,代码来源:MsMqTests.cs

示例4: OpenReceive

        public static MsmqConnector OpenReceive(MsmqAddress address, bool enlist)
        {
            var queue = new MessageQueue(address.Proprietary, QueueAccessMode.Receive);
            queue.MessageReadPropertyFilter.SetAll();

            Log.Info(Diagnostics.OpeningQueueForReceive, address, enlist);

            if (!enlist || queue.Transactional)
                return new MsmqConnector(queue, address, enlist);

            queue.Dispose();
            Log.Error(Diagnostics.NonTransactionalQueue, address.Canonical);
            throw new EndpointException(string.Format(CultureInfo.InvariantCulture, Diagnostics.NonTransactionalQueue, address.Canonical));
        }
开发者ID:etishor,项目名称:NanoMessageBus,代码行数:14,代码来源:MsmqConnector.cs

示例5: SendImpression2

 internal static bool SendImpression2(int IDSubScheduleDetail)
 {
     try
     {
         MessageQueue MQ = new MessageQueue(server_msmq2);
         MQ.Send(string.Format("IDSub:{0}:{1:dd/MM/yyyy HH-mm}", IDSubScheduleDetail, DateTime.Now),
             string.Format("IDSub:{0}:{1:dd/MM/yyyy HH-mm}", IDSubScheduleDetail, DateTime.Now));
         MQ.Dispose();
         return true;
     }
     catch
     {
         return false;
     }
 }
开发者ID:congtien169,项目名称:Dout,代码行数:15,代码来源:MSQ.cs

示例6: SendClick

 public static bool SendClick(string IDSubScheduleDetail, string IDSubpage)
 {
     try
     {
         MessageQueue MQ = new MessageQueue(MQ_CLICK);
         MQ.Send(string.Format("IDSub:{0},{1}:{2:dd/MM/yyyy HH-mm}", IDSubScheduleDetail, IDSubpage, DateTime.Now),
             string.Format("IDSub:{0},{1}:{2:dd/MM/yyyy HH-mm}", IDSubScheduleDetail, IDSubpage, DateTime.Now));
         MQ.Dispose();
         MQ.Close();
         return true;
     }
     catch
     {
         return false;
     }
 }
开发者ID:congtien169,项目名称:Lib,代码行数:16,代码来源:MSQ.cs

示例7: SendImpression3

 public static string SendImpression3(int IDSubScheduleDetail)
 {
     try
     {
         MessageQueue MQ = new MessageQueue(server_msmq);
         MQ.Send(string.Format("IDSub:{0}:{1:dd/MM/yyyy HH-mm}", IDSubScheduleDetail, DateTime.Now),
             string.Format("IDSub:{0}:{1:dd/MM/yyyy HH-mm}", IDSubScheduleDetail, DateTime.Now));
         MQ.Dispose();
         MQ.Close();
         return "done";
     }
     catch(Exception ex)
     {
         return ex.Message;
     }
 }
开发者ID:congtien169,项目名称:Lib,代码行数:16,代码来源:MSQ.cs

示例8: button1_Click

        private void button1_Click(object sender, EventArgs e)
        {
            MessageQueue msgQ = new MessageQueue(_msgQRec);

           

            System.Messaging.Message m = new System.Messaging.Message();
            m.Formatter = new XmlMessageFormatter(new Type[] { typeof(String) });

            try
            {
                //When we pull the message off from the queue it will be in the form of a 
                //byte array
                m = msgQ.Receive();
                byte[] data = new byte[1024];
                m.BodyStream.Read(data, 0, 1024);
                string strMessage = ASCIIEncoding.ASCII.GetString(data);
                
                //load message into XmlDocument
                XmlDocument xml = new XmlDocument();
                xml.LoadXml(strMessage);
             
                //Deserialize Xml Document into a typed C# object  
                var ser = new XmlSerializer(typeof(WorkOrderRequests));
                var wo = (WorkOrderRequests)ser.Deserialize(new StringReader(xml.OuterXml));
               
                //Populate our GUI
                txtFunctionalLocation.Text = wo.WorkOrderRequest[0].FunctionalLocation;
                txtMachineID.Text = wo.WorkOrderRequest[0].MachinedID;
                txtMaintenanceType.Text = wo.WorkOrderRequest[0].MaintenanceType;
                txtPlant.Text = wo.WorkOrderRequest[0].Plant;
                txtRequestedDate.Text = wo.WorkOrderRequest[0].RequestDate.ToString();
                txtWorkOrderID.Text = wo.WorkOrderRequest[0].WorkOrderID;

                btnCompleteWorkOrder.Visible = true;

                msgQ.Close();
                msgQ.Dispose();  
              
            }
            catch (Exception ex)
            {
                MessageBox.Show(String.Format("An exception has occurred {0}", ex.ToString()));
            }

        }
开发者ID:kentweare,项目名称:MuleSoft.DotNet.Samples,代码行数:46,代码来源:Form1.cs

示例9: HandleComplete

        public static void HandleComplete(ProcessorQueue processorQueue, IWorkflowMessage message)
        {
            MessageQueue completedQueue = new System.Messaging.MessageQueue(processorQueue.CompletedQueue);

            using (TransactionScope txScope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                try
                {
                    completedQueue.Send(message, MessageQueueTransactionType.Automatic);
                    txScope.Complete();
                }
                catch (InvalidOperationException)
                {

                }
                finally
                {
                    completedQueue.Dispose();
                }
            }
        }
开发者ID:invertedsoftware,项目名称:Inverted-Software-Workflow-Engine,代码行数:21,代码来源:QueueOperationsHandler.cs

示例10: CloseQueueHandle

 /// <summary>
 /// Closes the queue handle.  Cancel pending receive operation by closing the queue handle
 /// To properly dispose of the queue handle, ensure that EnableConnectionCache=false on the
 /// MessageQueue that this listener is configured to use.
 /// </summary>
 protected void CloseQueueHandle(MessageQueue mq)
 {
     lock (messageQueueMonitor)
     {
         mq.Close();
         mq.Dispose();
     }
 }
开发者ID:ouyangyl,项目名称:MySpringNet,代码行数:13,代码来源:AbstractMessageListenerContainer.cs

示例11: SendToStatusQueue

        // Sends status message to status queue.
        // 0 - subqueue complete, 1 - subqueue ready for delete
        private void SendToStatusQueue(string correlationId, int subQueueStatus, string largeSequenceId)
        {
            string statusQueuePath = "FormatName:DIRECT=OS:" + this.queue.MachineName + @"\" + Parameters.STATUS_QUEUE;
            MessageQueue statusQueue = new MessageQueue(statusQueuePath);
            try
            {
                bool canRead = statusQueue.CanRead;
                bool canWrite = statusQueue.CanWrite;
                if ((!canRead) || (!canWrite))
                {
                    throw new LargeMessageQueueException(null,
                        "Transactional status queue should have both read and write access for this user. Current status is: Read=" +
                        canRead + ", Write=" + canWrite);
                }
            }
            catch (MessageQueueException mqe)
            {
                throw new LargeMessageQueueException("Transactional status queue not available", mqe);
            }

            Message statusMessage = new Message();
            statusMessage.AppSpecific = subQueueStatus;
            statusMessage.Formatter = new BinaryMessageFormatter();
            statusMessage.Body = largeSequenceId;
            if (correlationId != null)
            {
                statusMessage.CorrelationId = correlationId;
            }

            statusQueue.Send(statusMessage, MessageQueueTransactionType.Single);

            statusQueue.Dispose();
            statusQueue.Close();
        }
开发者ID:dgrapp1,项目名称:WindowsSDK7-Samples,代码行数:36,代码来源:LargeMessageQueue.cs

示例12: ActivateSubscription

 /// <summary>
 /// Activates a subscription by starting
 /// to listen to the specified queue
 /// </summary>
 /// <param name="queue">Queue to activate</param>
 /// <param name="subscription">Subscription to activate</param>
 private void ActivateSubscription(MessageQueue queue, MsmqSubscription subscription)
 {
     try
      {
     _lock.AcquireWriterLock(Timeout.Infinite);
     _subscriptionsByID.Add(subscription.ID, subscription);
     // do we already have suscriptions to this queue?
     Receiver receiver = null;
     if ( !_queueReceivers.ContainsKey(queue.FormatName) )
     {
        receiver = new Receiver(queue, OnMessageReceived);
        _queueReceivers.Add(queue.FormatName, receiver);
     } else
     {
        receiver = _queueReceivers[queue.FormatName];
        receiver.AddRef();
        queue.Dispose();
     }
      } finally
      {
     _lock.ReleaseWriterLock();
      }
 }
开发者ID:tomasr,项目名称:msmqactivities,代码行数:29,代码来源:MsmqListenerService.cs

示例13: AddFrameworkJob

 /// <summary>
 /// Add a job for the framework to process
 /// </summary>
 /// <param name="jobName">The name of the job in the framework's workflow file</param>
 /// <param name="message">A class containing the message data</param>
 public static void AddFrameworkJob(string jobName, IWorkflowMessage message)
 {
     // Add a message to the Queue
     ProcessorJob processorJob = new ProcessorJob() { JobName = jobName, CreatedDate = DateTime.Now };
     WorkflowConfiguration.LoadFrameworkConfig(processorJob);
     ProcessorQueue processorQueue = GetActiveQueue(processorJob, QueueOperationType.Delivery);
     MessageQueue workflowQueue = new MessageQueue(processorQueue.MessageQueue);
     MessageQueueTransaction transaction = new MessageQueueTransaction();
     try
     {
         if (processorQueue.MessageQueueType == MessageQueueType.Transactional)
         {
             transaction.Begin();
             workflowQueue.Send(message, jobName, transaction);
             transaction.Commit();
         }
         else
         {
             workflowQueue.Send(message, jobName);
         }
     }
     catch (Exception e)
     {
         if (processorQueue.MessageQueueType == MessageQueueType.Transactional &&
             transaction.Status == MessageQueueTransactionStatus.Pending)
             transaction.Abort();
         throw new WorkflowException("Error adding message to Queue", e);
     }
     finally
     {
         transaction.Dispose();
         workflowQueue.Dispose();
     }
 }
开发者ID:invertedsoftware,项目名称:Inverted-Software-Workflow-Engine,代码行数:39,代码来源:FrameworkManager.cs

示例14: PerformHouseKeeping

        // Missing fragments are marked as rejected in a separate transaction and are sent to sender's DLQ on commit.
        private void PerformHouseKeeping(string correlationId)
        {
            string subQueueName = Utilities.GetSubQueueName(correlationId);
            string subQueuePath = "FormatName:DIRECT=OS:" + this.queue.MachineName + @"\" + this.queue.QueueName + ";" + subQueueName;
            MessageQueue subQueue = new MessageQueue(subQueuePath);

            Message messageToReject = null;

            // MarkMessageRejected works only with transaction
            MessageQueueTransaction rejectTransaction = new MessageQueueTransaction();
            rejectTransaction.Begin();

            // ReceiveById to clear the first header fragment whose Id is put in all other fragment's correlation id
            // This is in a separate try-catch so that it proceeds with marking other fragments in case first fragment
            // is the one that is lost
            try
            {
                messageToReject = subQueue.ReceiveById(correlationId, rejectTransaction);
                NativeMethods.MarkMessageRejected(subQueue.FormatName, messageToReject.LookupId);
            }
            catch (MessageQueueException)
            {
                // Don't do anything
            }
            catch (InvalidOperationException)
            {
                // Don't do anything
            }

            // Marks other fragments in subqueue as rejected
            try
            {
                while (true)
                {
                    messageToReject = subQueue.ReceiveByCorrelationId(correlationId, rejectTransaction);
                    NativeMethods.MarkMessageRejected(subQueue.FormatName, messageToReject.LookupId);
                }
            }
            catch (MessageQueueException)
            {
                // Don't do anything and just come out of the loop
            }
            catch (InvalidOperationException)
            {
                // Don't do anything and just come out of the loop
            }

            // Safe reject in case message becomes available in main queue
            try
            {
                messageToReject = this.queue.ReceiveById(correlationId, rejectTransaction);
                NativeMethods.MarkMessageRejected(subQueue.FormatName, messageToReject.LookupId);
            }
            catch (MessageQueueException)
            {
                // Don't do anything
            }
            catch (InvalidOperationException)
            {
                // Don't do anything
            }

            // Mark other fragments in main queue as rejected
            try
            {
                while (true)
                {
                    messageToReject = this.queue.ReceiveByCorrelationId(correlationId, rejectTransaction);
                    NativeMethods.MarkMessageRejected(this.queue.FormatName, messageToReject.LookupId);
                }
            }
            catch (MessageQueueException)
            {
                // Don't do anything and just come out of the loop
            }
            catch (InvalidOperationException)
            {
                // Don't do anything and just come out of the loop
            }
            finally
            {
                subQueue.Dispose();
                subQueue.Close();

                rejectTransaction.Commit();
                rejectTransaction.Dispose();
            }
        }
开发者ID:dgrapp1,项目名称:WindowsSDK7-Samples,代码行数:89,代码来源:LargeMessageQueue.cs

示例15: PeekFromStatusQueue

        // Peeks message (first/application-specified correlationId) from status queue
        private Message PeekFromStatusQueue(string correlationId)
        {
            string statusQueuePath = "FormatName:DIRECT=OS:" + this.queue.MachineName + @"\" + Parameters.STATUS_QUEUE;
            MessageQueue statusQueue = new MessageQueue(statusQueuePath);
            statusQueue.Formatter = new BinaryMessageFormatter();
            statusQueue.MessageReadPropertyFilter.AppSpecific = true;
            statusQueue.MessageReadPropertyFilter.CorrelationId = true;

            Message statusMessage = null;
            try
            {
                if (correlationId == null)
                {
                    statusMessage = statusQueue.PeekByLookupId(MessageLookupAction.First, 0);
                }
                else
                {
                    statusMessage = statusQueue.PeekByCorrelationId(correlationId, TimeSpan.Zero);
                }
            }
            catch (MessageQueueException)
            {
                // If status queue is empty, peek will throw MessageQueueException
                throw new InvalidOperationException();
            }

            statusQueue.Dispose();
            statusQueue.Close();
            return statusMessage;
        }
开发者ID:dgrapp1,项目名称:WindowsSDK7-Samples,代码行数:31,代码来源:LargeMessageQueue.cs


注:本文中的System.Messaging.MessageQueue.Dispose方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。