您的位置:首页 > 编程语言 > C#

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

2012-07-31 09:11 891 查看
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();
        }
    }
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows c# textbox