C#中使用Windows消息队列服务(MSMQ)简单示例

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Messaging;

 

namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        string QueuePath = ".\\private$\\test";//队列路径

        IMessageFormatter formatter = new System.Messaging.BinaryMessageFormatter();//把自定义类型串行化为一个专有的二进制的格式

        private void button1_Click(object sender, EventArgs e)

        {

            CreateMessageQueue(QueuePath);

            SendMessage(QueuePath, CreateMessage(textBox1 .Text, formatter));

        }

 

        private System.Messaging.Message CreateMessage(string text, IMessageFormatter formatter)

        {

            //创建消息

            System.Messaging.Message message = new System.Messaging.Message();

            message.Body = text;

            message.Formatter = formatter;

            return message;

        }

 

        private void CreateMessageQueue(string queuePath)

        {

            //创建队列

            if (!MessageQueue.Exists(queuePath))

            {

                MessageQueue queue = MessageQueue.Create(queuePath);

                queue.SetPermissions("Administrators"MessageQueueAccessRights.FullControl);

                queue.Label = queuePath;

            }

        }

 

        private bool SendMessage(string queuePath, System.Messaging.Message msg)

        {

            //发送消息

            if (!MessageQueue.Exists(queuePath))

            {

                return false;

            }

 

            MessageQueue queue = new System.Messaging.MessageQueue(queuePath);

            queue.Send(msg);

            return true;

        }

 

        private System.Messaging.Message ReceiveMessage(string queuePath)

        {

            //接收消息

            if (!MessageQueue.Exists(queuePath))

            {

                return null;

            }

 

            MessageQueue queue = new MessageQueue(queuePath);

            System.Messaging.Message message = queue.Receive();

            return message;

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            System.Messaging.Message msg = ReceiveMessage(QueuePath);

            msg.Formatter = formatter;

            textBox2 .Text = msg.Body.ToString();

        }

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值