用c# 实现一个消息队列的例子
时间: 2024-03-21 10:42:12 浏览: 144
c#消息队列案例
以下是使用 C# 实现一个简单的消息队列的示例代码:
```csharp
using System;
using System.Collections.Generic;
public class MessageQueue<T>
{
private readonly Queue<T> queue = new Queue<T>();
public void Enqueue(T message)
{
lock (queue)
{
queue.Enqueue(message);
System.Console.WriteLine("Enqueue message: " + message);
}
}
public T Dequeue()
{
T message = default(T);
lock (queue)
{
if (queue.Count > 0)
{
message = queue.Dequeue();
System.Console.WriteLine("Dequeue message: " + message);
}
}
return message;
}
}
// 测试
public class TestMessageQueue
{
public static void Main()
{
MessageQueue<string> queue = new MessageQueue<string>();
// 生产者
new System.Threading.Thread(() =>
{
for (int i = 0; i < 10; i++)
{
string message = "Message " + i;
queue.Enqueue(message);
System.Threading.Thread.Sleep(1000);
}
}).Start();
// 消费者
new System.Threading.Thread(() =>
{
while (true)
{
string message = queue.Dequeue();
if (message != null)
{
System.Console.WriteLine("Processing message: " + message);
}
System.Threading.Thread.Sleep(500);
}
}).Start();
Console.ReadLine();
}
}
```
以上代码实现了一个简单的消息队列,其中 `MessageQueue` 类封装了一个基于队列的消息存储和操作方法。`Enqueue` 方法用于将消息加入队列中,`Dequeue` 方法用于从队列中取出一条消息。在测试代码中,使用两个线程模拟生产者和消费者的操作。生产者每隔 1 秒钟产生一条消息,并加入到消息队列中;消费者则不断从消息队列中取出消息,并进行处理。运行程序后可以看到,生产者和消费者的操作是异步的,消息队列可以缓存大量的消息,并支持解耦和异步处理。
阅读全文