简单的同步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;

                }

            }

        }

    }

```



你可能感兴趣的:(同步)