using System;
using System.Messaging;
namespace MyProject
{
/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
/***************************************************/
// Provides an entry point into the application.
//
// This example gets lists of queues by a variety
// of criteria.
/***************************************************/
public static void Main()
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
// Send normal and high priority messages.
myNewQueue.GetQueuesByCategory();
myNewQueue.GetQueuesByLabel();
myNewQueue.GetQueuesByComputer();
myNewQueue.GetAllPublicQueues();
myNewQueue.GetPublicQueuesByCriteria();
myNewQueue.GetPrivateQueues();
return;
}
/***************************************************/
// Gets a list of queues with a specified category.
// Sends a broadcast message to all queues in that
// category.
/***************************************************/
public void GetQueuesByCategory()
{
// Get a list of queues with the specified category.
MessageQueue[] QueueList =
MessageQueue.GetPublicQueuesByCategory(new
Guid("{00000000-0000-0000-0000-000000000001}"));
// Send a broadcast message to each queue in the array.
foreach(MessageQueue queueItem in QueueList)
{
queueItem.Send("Broadcast message.");
}
return;
}
/***************************************************/
// Gets a list of queues with a specified label.
// Sends a broadcast message to all queues with that
// label.
/***************************************************/
public void GetQueuesByLabel()
{
// Get a list of queues with the specified label.
MessageQueue[] QueueList =
MessageQueue.GetPublicQueuesByLabel("My Label");
// Send a broadcast message to each queue in the array.
foreach(MessageQueue queueItem in QueueList)
{
queueItem.Send("Broadcast message.");
}
return;
}
/***************************************************/
// Gets a list of queues on a specified computer.
// Displays the list on screen.
/***************************************************/
public void GetQueuesByComputer()
{
// Get a list of queues on the specified computer.
MessageQueue[] QueueList =
MessageQueue.GetPublicQueuesByMachine("MyComputer");
// Display the paths of the queues in the list.
foreach(MessageQueue queueItem in QueueList)
{
Console.WriteLine(queueItem.Path);
}
return;
}
/***************************************************/
// Gets a list of all public queues.
/***************************************************/
public void GetAllPublicQueues()
{
// Get a list of public queues.
MessageQueue[] QueueList =
MessageQueue.GetPublicQueues();
return;
}
/***************************************************/
// Gets a list of all public queues that match
// specified criteria. Displays the list on
// screen.
/***************************************************/
public void GetPublicQueuesByCriteria()
{
// Define criteria to filter the queues.
MessageQueueCriteria myCriteria = new
MessageQueueCriteria();
myCriteria.CreatedAfter = DateTime.Now.Subtract(new
TimeSpan(1,0,0,0));
myCriteria.ModifiedBefore = DateTime.Now;
myCriteria.MachineName = ".";
myCriteria.Label = "My Queue";
// Get a list of queues with that criteria.
MessageQueue[] QueueList =
MessageQueue.GetPublicQueues(myCriteria);
// Display the paths of the queues in the list.
foreach(MessageQueue queueItem in QueueList)
{
Console.WriteLine(queueItem.Path);
}
return;
}
/***************************************************/
// Gets a list of private queues on the local
// computer. Displays the list on screen.
/***************************************************/
public void GetPrivateQueues()
{
// Get a list of queues with the specified category.
MessageQueue[] QueueList =
MessageQueue.GetPrivateQueuesByMachine(".");
// Display the paths of the queues in the list.
foreach(MessageQueue queueItem in QueueList)
{
Console.WriteLine(queueItem.Path);
}
return;
}
}
}
本文引用通告测试:http://blog.661z.com/2010/03/08/messagequeuedeshiyong/
分享到:
相关推荐
MessageQueue使用FIFO(先进先出)原则,即最早添加的消息最先被处理。Message对象包含了消息的内容、目标Handler等信息,通过`MessageQueue.enqueueMessage()`方法添加到队列中。 Handler、Looper和MessageQueue...
综上所述,"C# MessageQueue示例"主要展示了如何使用C#的`System.Messaging`命名空间中的`MessageQueue`类来发送和接收消息。这在分布式系统、多线程环境以及需要高可用性和容错性的应用场景中非常有用。通过学习和...
在Android开发中,Message Queue是一种重要的机制,用于在不同线程间进行异步通信和任务调度。理解并熟练运用Message Queue、Looper和Handler是构建高效、响应性良好的Android应用的关键。 1. **Message Queue...
通常情况下,我们会使用一个Looper对象对线程的MessageQueue进行管理。在Android应用的主线程创建时,会默认创建一个Looper对象,而这个Looper对象的创建会自动创建一个MessageQueue。对于其他非主线程来说,默认...
MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战
在Android系统中,MessageQueue和Looper是两个非常关键的组件,它们构成了消息处理机制的核心,尤其是在UI线程中。理解并有效地使用它们对于编写高效、响应迅速的Android应用至关重要。 `Looper`是Android中的一个...
【Android 线程间通信:Handler、Looper 和 MessageQueue 深度解析】 在 Android 应用开发中,为了保证界面的流畅性,我们通常需要将耗时操作放在非 UI 线程中执行,然后通过某种机制将结果传递回 UI 线程进行界面...
通过阅读《android MessageQueue1.doc》、《android MessageQueue2.doc》和《android MessageQueue3.doc》,你可以更深入地了解MessageQueue的实现细节、使用技巧以及常见问题的解决方案,这对于提升Android应用的...
### Android的消息处理机制详解 #### 一、引言 Android应用程序是通过消息驱动的,它...通过合理使用Message、MessageQueue、Handler和Looper,开发者可以轻松地实现线程间的通信,从而提升应用的性能和用户体验。
在C#客户端,我们主要使用`MessageQueue`类来发送消息。以下是一个简单的示例: ```csharp using System.Messaging; public void SendMessage(string queuePath, string message) { MessageQueue queue = new ...
进程间通信之消息队列 ( message queue ) 消息队列是消息的链表,具有特定的格式,并由消息队列标识符标识. 七种进程间通信方式: 一.无名管道( pipe ) 二.有名管道( fifo ) 三.共享内存 ( shared memory ) 四....
子线程中的Handler通过Looper.prepare()和Looper.loop()建立消息循环,然后使用Message.obtain()创建Message,设置数据和目标Handler,最后通过Handler.sendMessage()将Message放入MessageQueue。主线程的Looper会...
MessageQueue消息服务器** - **核心组件**:处理消息的接收、存储和分发。 **2. 代理** - **作用**:作为客户端与消息服务器之间的中介。 - **功能**:负载均衡、路由、安全认证等。 **3. 连接服务** - **定义**...
是一个快速的开源消息组件(框架),支持集群,同等网络,自动检测,TCP,SSL,广播,持久化,XA,和J2EE1.4容器无缝结合,并且支持轻量级容器和大多数跨语言客户端上的Java虚拟机。消息异步接受,减少软件多系统集成...
- Looper是MessageQueue的使用者,它在一个无限循环中不断调用MessageQueue的`next()`方法,获取并处理消息。 - 当MessageQueue为空时,`next()`会调用`pollOnce()`阻塞当前线程,直到有新消息到来或者超时。 3. ...
比较了Zermoq MQTT Rabbitmq 等多种Message Queue方案
本文将深入探讨`Looper`的使用及其在管理`MessageQueue`中的作用。 首先,`Looper`是Android系统中一个用于处理消息循环的类,它在后台线程中不断检查消息队列`MessageQueue`,并将新消息分发给相应的`Handler`进行...
### Message Queue(消息队列)介绍与应用 #### 消息处理中的主要概念 消息队列作为一种关键的技术组件,在分布式系统中发挥着重要的作用。它主要用于处理和传递数据单元(即消息),这些消息可以在简单的文本字符串...