简单的同步MSMQ

# 简单的同步MSMQ

```cs
    using System;
    using System.Messaging;
    using System.Windows.Forms;
    
    namespace MSMQExample
    {
        ///
        /// 一个简单的MSMQ例子,目前只是同步操作。
        ///
        public partial class Form1 : Form
        {
    
            private string queuestring = @".\Private$\MyQueue";
            private int times = 0;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
    
            ///
            ///
            ///
            ///
            private void btn_create_Click(object sender, EventArgs e)
            {
                try
                {
                    if (!MessageQueue.Exists(queuestring))
                    {
                        MessageQueue.Create(queuestring);
                    }
                    MessageQueue queue = new MessageQueue(queuestring);
                    lbl_msg1.Text = string.Format("path={0}\nformat={1}", queue.Path, queue.FormatName);
                }
                catch (MessageQueueException ex)
                {
                    lbl_msg1.Text = ex.Message;
                }
            }
    
            /// 
            /// 
            private void btn_rec_Click(object sender, EventArgs e)
            {
                try
                {
                    MessageQueue queue = new MessageQueue(queuestring);
                    queue.Formatter = new BinaryMessageFormatter();
                    int count = 0;
                    foreach (System.Messaging.Message message in queue)
                    {
                        count++;
                        break;
                    }
                    if (count > 0)
                    {
                        System.Messaging.Message message = queue.Receive();
                        byte[] buffer = (byte[])message.Body;
                        lbl_msg2.Text = System.Text.Encoding.UTF8.GetString(buffer);
                    }
                    else
                        lbl_msg2.Text = "没有消息!";
                }
                catch (Exception ex)
                {
                    lbl_msg2.Text = ex.Message;
                }
            }
    
            /// 
            /// 
            private void btn_send_Click(object sender, EventArgs e)
            {
                try
                {
                    string mss = DateTime.Now.ToString("当前时间:yyyy-MM-dd HH:mm:ss.fff。");
                    MessageQueue queue = new MessageQueue(queuestring);
                    byte[] msg = System.Text.Encoding.UTF8.GetBytes(mss);
                    System.Messaging.Message Msg = new System.Messaging.Message(msg, new BinaryMessageFormatter());
                    Msg.AcknowledgeType = AcknowledgeTypes.PositiveReceive | AcknowledgeTypes.PositiveArrival;
                    Msg.Label = "消息" + times;
                    queue.Send(Msg);
                    queue.Close();
                    lbl_msg3.Text = "已发送!";
                    times++;
                }
                catch (Exception ex)
                {
                    lbl_msg3.Text = ex.Message;
                }
            }
        }
    }
```

posted @ 2013-09-22 23:48  常伟华  阅读(365)  评论(0编辑  收藏  举报