不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
.NET使用消息队列示例
编辑:dnawo 日期:2010-05-09
消息队列是Windows 2000、Windows XP、Windows Server 2003的一个组件,并将继续包含在Windows Vista和以后的Windows服务器中。即使目标接收应用程序没有运行,或运行发送或接收应用程序的计算机没有联网,协同合作的应用程序仍能利用消息队列在彼此之间发送和接收消息。在到达目标队列之前,消息由消息队列存储并转发。接收应用程序能够从队列中恢复数据。
消息队列的主要特点在于它分离发送和接收应用程序,使其不必同时运行。这意味着一个应用程序能够把数据存放在队列中,而不用理会队列中的项目是否被传送到接收应用程序。
消息队列包含两个重要的概念:队列和消息。队列用于存放消息,一个队列可以存储多个消息。.NET提供了两个相关的类:MessageQueue类用于管理队列,Message类用于管理消息。
一、安装消息队列组件
①.在控制面板中打开'添加或删除程序",打开"添加/删除Windows组件":

②.双击"应用程序服务器",找到并钩选"消息队列",然后安装:

③.安装完后在计算机管理的"服务和应用程序"下可看到它:

二、使用消息队列
1.简单消息发送和接收
2. 复杂消息发送和接收
消息队列的主要特点在于它分离发送和接收应用程序,使其不必同时运行。这意味着一个应用程序能够把数据存放在队列中,而不用理会队列中的项目是否被传送到接收应用程序。
消息队列包含两个重要的概念:队列和消息。队列用于存放消息,一个队列可以存储多个消息。.NET提供了两个相关的类:MessageQueue类用于管理队列,Message类用于管理消息。
一、安装消息队列组件
①.在控制面板中打开'添加或删除程序",打开"添加/删除Windows组件":

②.双击"应用程序服务器",找到并钩选"消息队列",然后安装:

③.安装完后在计算机管理的"服务和应用程序"下可看到它:

二、使用消息队列
1.简单消息发送和接收
复制内容到剪贴板
程序代码

using System;
using System.Messaging;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string path = @".\private$\MzwuCom";
MessageQueue queue;
Message msg;
//创建队列
if (!MessageQueue.Exists(path))
queue = MessageQueue.Create(path);
else
queue = new MessageQueue(path);
//往队列发送消息
queue.Send("www");
queue.Send("mzwu");
queue.Send("com");
//接收消息
queue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); } //Receive每次取第一个消息,并在队列中将其删除
catch { msg = null; }
while (msg != null)
{
Console.WriteLine(msg.Body.ToString());
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); }
catch { msg = null; }
}
Console.ReadKey();
}
}
}
using System.Messaging;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string path = @".\private$\MzwuCom";
MessageQueue queue;
Message msg;
//创建队列
if (!MessageQueue.Exists(path))
queue = MessageQueue.Create(path);
else
queue = new MessageQueue(path);
//往队列发送消息
queue.Send("www");
queue.Send("mzwu");
queue.Send("com");
//接收消息
queue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); } //Receive每次取第一个消息,并在队列中将其删除
catch { msg = null; }
while (msg != null)
{
Console.WriteLine(msg.Body.ToString());
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); }
catch { msg = null; }
}
Console.ReadKey();
}
}
}
2. 复杂消息发送和接收
复制内容到剪贴板
程序代码

using System;
using System.IO;
using System.Messaging;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string path = @".\private$\MzwuCom";
MessageQueue queue;
Message msg;
FileInfo info;
//创建队列
if (!MessageQueue.Exists(path))
queue = MessageQueue.Create(path);
else
queue = new MessageQueue(path);
//往队列发送消息
msg = new Message();
msg.Formatter = new BinaryMessageFormatter();
msg.Body = new FileInfo(@"c:\www.txt");
queue.Send(msg);
msg.Body = new FileInfo(@"c:\mzwu.txt");
queue.Send(msg);
msg.Body = new FileInfo(@"c:\com.txt");
queue.Send(msg);
//接收消息
queue.Formatter = new BinaryMessageFormatter();
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); }
catch { msg = null; }
while (msg != null)
{
info = msg.Body as FileInfo;
if (info != null)
Console.WriteLine(info.Name);
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); }
catch { msg = null; }
}
Console.ReadKey();
}
}
}
using System.IO;
using System.Messaging;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string path = @".\private$\MzwuCom";
MessageQueue queue;
Message msg;
FileInfo info;
//创建队列
if (!MessageQueue.Exists(path))
queue = MessageQueue.Create(path);
else
queue = new MessageQueue(path);
//往队列发送消息
msg = new Message();
msg.Formatter = new BinaryMessageFormatter();
msg.Body = new FileInfo(@"c:\www.txt");
queue.Send(msg);
msg.Body = new FileInfo(@"c:\mzwu.txt");
queue.Send(msg);
msg.Body = new FileInfo(@"c:\com.txt");
queue.Send(msg);
//接收消息
queue.Formatter = new BinaryMessageFormatter();
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); }
catch { msg = null; }
while (msg != null)
{
info = msg.Body as FileInfo;
if (info != null)
Console.WriteLine(info.Name);
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); }
catch { msg = null; }
}
Console.ReadKey();
}
}
}
评论: 0 | 引用: 0 | 查看次数: 4097
发表评论
请登录后再发表评论!