保存消息队列数据的本地磁盘地址:C:\WINDOWS\system32\msmq\storage
注意:
1,要使用 windows 消息队列机制,必须在该 windows 操作系统中先安装“ windows 消息队列” 组件(从操作系统光盘中) ;
2,要使用启用消息队列,必须先启动“Messenger”服务(传输客户端和服务器之间的 NET SEND 和 Alerter 服务消息。此服务与 Windows Messenger 无关。如果服务停止,Alerter 消息不会被传输。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。);
控件:
Form1.Designer.cs
private
System.Windows.Forms.Button btnSendMessage;
private System.Windows.Forms.Button btnEnumerateMessages;
private System.Windows.Forms.TextBox txtMessages;
private System.Windows.Forms.Button btnRemoveMessages;
private System.Windows.Forms.Button btnSendHighestPriorityMessage;
private System.Windows.Forms.Button btnEnumerateMessages;
private System.Windows.Forms.TextBox txtMessages;
private System.Windows.Forms.Button btnRemoveMessages;
private System.Windows.Forms.Button btnSendHighestPriorityMessage;
代码:
代码
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;
using System.Xml.Serialization;
namespace MessageQueuingExample
{
public partial class Form1 : Form
{
// The . in the queueName represents localhost
private const string queueName = " .\\Private$\\Liuq " ;
// private const string queueName = "A405\\Private$\\Liuq";
// We need this class-wide to access it in the methods.
MessageQueue queue = null ;
public Form1()
{
InitializeComponent();
}
private void Form1_Load( object sender, EventArgs e)
{
// Create the queue if it doesn't exist.
CreateQueue();
}
private void CreateQueue()
{
// Does the queue already exist??
if (MessageQueue.Exists(queueName))
// Yes, it's already there.
queue = new MessageQueue(queueName);
else
// No, we need to create it.
queue = MessageQueue.Create(queueName, false );
}
private void btnSendMessage_Click( object sender, EventArgs e)
{
// Instantiate our MessageContent object.
MessageContent message = new MessageContent( " Hello world! " );
// Send it to the queue.
queue.Send(message, " Sample Message " );
MessageBox.Show( " Message sent. " , " MSMQ " );
}
private void btnEnumerateMessages_Click( object sender, EventArgs e)
{
// Clear the textbox.
this .txtMessages.Clear();
// Get all messages on the queue.
System.Messaging.Message[] messages = queue.GetAllMessages();
// Loop through the messages.
foreach (System.Messaging.Message message in messages)
{
// Set the formatter for the message.
message.Formatter = new System.Messaging.XmlMessageFormatter( new Type[ 1 ] { typeof (MessageContent) });
// Get the MessageContent object out of the message.
MessageContent content = (MessageContent)message.Body;
// Update the textbox.
this .txtMessages.Text += content.MessageText + " - " + content.CreationDate.ToString() + " \r\n " ;
}
}
private void btnRemoveMessages_Click( object sender, EventArgs e)
{
// Purge all messages from the queue.
queue.Purge();
MessageBox.Show( " Messages purged " , " MSMQ " );
}
private void btnSendHighestPriorityMessage_Click( object sender, EventArgs e)
{
// Create a XmlSerializer for the object type we're sending.
XmlSerializer serializer = new XmlSerializer( typeof (MessageContent));
// Instantiate a new message.
System.Messaging.Message queueMessage = new System.Messaging.Message();
// Set the priority to Highest.
queueMessage.Priority = MessagePriority.Highest;
// Create our MessageContent object.
MessageContent messageContent = new MessageContent( " Hello world - IMPORTANT! " );
// Serialize the MessageContent object into the queueMessage.
serializer.Serialize(queueMessage.BodyStream, messageContent);
// Send the message.
queue.Send(queueMessage, " HIGH PRIORITY " );
MessageBox.Show( " Important message sent. " , " MSMQ " );
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Messaging;
using System.Xml.Serialization;
namespace MessageQueuingExample
{
public partial class Form1 : Form
{
// The . in the queueName represents localhost
private const string queueName = " .\\Private$\\Liuq " ;
// private const string queueName = "A405\\Private$\\Liuq";
// We need this class-wide to access it in the methods.
MessageQueue queue = null ;
public Form1()
{
InitializeComponent();
}
private void Form1_Load( object sender, EventArgs e)
{
// Create the queue if it doesn't exist.
CreateQueue();
}
private void CreateQueue()
{
// Does the queue already exist??
if (MessageQueue.Exists(queueName))
// Yes, it's already there.
queue = new MessageQueue(queueName);
else
// No, we need to create it.
queue = MessageQueue.Create(queueName, false );
}
private void btnSendMessage_Click( object sender, EventArgs e)
{
// Instantiate our MessageContent object.
MessageContent message = new MessageContent( " Hello world! " );
// Send it to the queue.
queue.Send(message, " Sample Message " );
MessageBox.Show( " Message sent. " , " MSMQ " );
}
private void btnEnumerateMessages_Click( object sender, EventArgs e)
{
// Clear the textbox.
this .txtMessages.Clear();
// Get all messages on the queue.
System.Messaging.Message[] messages = queue.GetAllMessages();
// Loop through the messages.
foreach (System.Messaging.Message message in messages)
{
// Set the formatter for the message.
message.Formatter = new System.Messaging.XmlMessageFormatter( new Type[ 1 ] { typeof (MessageContent) });
// Get the MessageContent object out of the message.
MessageContent content = (MessageContent)message.Body;
// Update the textbox.
this .txtMessages.Text += content.MessageText + " - " + content.CreationDate.ToString() + " \r\n " ;
}
}
private void btnRemoveMessages_Click( object sender, EventArgs e)
{
// Purge all messages from the queue.
queue.Purge();
MessageBox.Show( " Messages purged " , " MSMQ " );
}
private void btnSendHighestPriorityMessage_Click( object sender, EventArgs e)
{
// Create a XmlSerializer for the object type we're sending.
XmlSerializer serializer = new XmlSerializer( typeof (MessageContent));
// Instantiate a new message.
System.Messaging.Message queueMessage = new System.Messaging.Message();
// Set the priority to Highest.
queueMessage.Priority = MessagePriority.Highest;
// Create our MessageContent object.
MessageContent messageContent = new MessageContent( " Hello world - IMPORTANT! " );
// Serialize the MessageContent object into the queueMessage.
serializer.Serialize(queueMessage.BodyStream, messageContent);
// Send the message.
queue.Send(queueMessage, " HIGH PRIORITY " );
MessageBox.Show( " Important message sent. " , " MSMQ " );
}
}
}
本文转自钢钢博客园博客,原文链接:http://www.cnblogs.com/xugang/archive/2010/04/24/1719299.html,如需转载请自行联系原作者