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

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://h2appy.blog.51cto.com/609721/184323
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Messaging;

namespace WindowsApplication1
{
        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(richTextBox1.Text, formatter));
                }

                private void button2_Click(object sender, EventArgs e)
                {
                        System.Messaging.Message msg = ReceiveMessage(QueuePath);
                        msg.Formatter = formatter;
                        richTextBox2.Text = msg.Body.ToString();
                }

                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;
                }
        }
}

本文出自 “GONE WITH THE WIND” 博客,请务必保留此出处http://h2appy.blog.51cto.com/609721/184323

posted @ 2012-04-10 16:43  Net-Spider  阅读(691)  评论(0)    收藏  举报