C# 获取待处理队列中的未处理消息:ConcurrentQueue 和 TryDequeue 示例

在 C# 中,可以使用 ConcurrentQueue<T> 类来实现待处理队列,并使用 TryDequeue 方法来获取未处理的消息。下面是一个简单的示例:

using System;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static ConcurrentQueue<string> messageQueue = new ConcurrentQueue<string>();

    static void Main()
    {
        // 开启一个任务来处理消息队列
        Task.Run(() => ProcessMessages());

        // 添加一些消息到队列中
        messageQueue.Enqueue('消息1');
        messageQueue.Enqueue('消息2');
        messageQueue.Enqueue('消息3');

        // 等待一段时间以便让任务处理消息
        Thread.Sleep(1000);

        // 添加更多消息到队列中
        messageQueue.Enqueue('消息4');
        messageQueue.Enqueue('消息5');

        // 等待一段时间以便让任务处理消息
        Thread.Sleep(1000);

        // 结束程序
        Console.WriteLine('按任意键退出...');
        Console.ReadKey();
    }

    static void ProcessMessages()
    {
        while (true)
        {
            if (messageQueue.TryDequeue(out string message))
            {
                Console.WriteLine('处理消息:' + message);
            }
            else
            {
                // 如果队列为空,则等待一段时间再继续处理
                Thread.Sleep(100);
            }
        }
    }
}

在这个示例中,我们使用 ConcurrentQueue<string> 作为待处理队列,并使用 TryDequeue 方法来尝试从队列中获取未处理的消息。如果成功获取到消息,则进行处理;否则等待一段时间再进行尝试。

C# 获取待处理队列中的未处理消息:ConcurrentQueue 和 TryDequeue 示例

原文地址: https://www.cveoy.top/t/topic/qouw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录