首页 > 其他分享 >BackgroundWorker和BlockingCollection配合实现有消息才发送的队列

BackgroundWorker和BlockingCollection配合实现有消息才发送的队列

时间:2024-08-16 09:38:39浏览次数:12  
标签:队列 MessageConsumer private BackgroundWorker send BlockingCollection BlockingQueu

private BackgroundWorker m_MessageConsumer = new BackgroundWorker();
private BlockingCollection<string> m_BlockingQueue = new BlockingCollection<string>();
构造函数
{
m_MessageConsumer.DoWork += M_MessageConsumer_DoWork;
    m_MessageConsumer.WorkerSupportsCancellation = true;
}
析构函数
{
m_MessageConsumer?.CancelAsync();
            m_MessageConsumer?.Dispose();
}
private void ClicentConnected(...)
{
    
    m_MessageConsumer.RunWorkerAsync();

}

private void M_MessageConsumer_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                while (m_U3DRunning)
                {
                    if (!m_BlockingQueue.IsCompleted)
                    {
                        string send = m_BlockingQueue.Take();
                        LogHelper.Debug(send);
                        m_PipeServer.PushMessage(send);
                    }

                }

            }
            catch (Exception ex)
            {
                LogHelper.Error(ex.Message, ex.StackTrace);
            }

        }
public void PushMessage(string send)
        {
            m_BlockingQueue.Add(send);
        }

标签:队列,MessageConsumer,private,BackgroundWorker,send,BlockingCollection,BlockingQueu
From: https://www.cnblogs.com/unmvyd/p/18361770

相关文章

  • 小X与队列
    题目题目描述小X正和同学们做列队的练习。有\(n\)名同学排成一路纵队,编号为i的同学排在从前往后数第i个位置上,即:初始时的队列为\(1,2,3,...,n\)。接下来小X会发出若干条指令,每条指令形如“请编号为x的同学排到最前面来”。(例如:若当前时刻的队列为\(5,4,3,2......
  • Python中堆、栈、队列之间的区别
    一、队列概念1、队列是只有一端可以进行插入操作,而另一端可以进行删除操作的有序线性存储结构,满足先进先出的约束。2、在计算机科学中,队列是一个集合,其中集合中的实体按顺序保存,集合上的主要(或唯一)操作是向后端位置添加实体,称为入队,前端位置并删除实体,称为出队。这使得队列成为......
  • 高性能无锁队列 Disruptor 核心原理分析及其在i主题业务中的应用
    一、i主题及Disruptor简介i主题是vivo旗下的一款主题商店app,用户可以通过下载主题、壁纸、字体等,实现对手机界面风格的一键更换和自定义。Disruptor是英国外汇交易公司LMAX开发的一个高性能的内存队列(用于系统内部线程间传递消息,不同于RocketMQ、Kafka这种分布式消息......
  • 高性能无锁队列 Disruptor 核心原理分析及其在i主题业务中的应用
    作者:来自vivo互联网服务器团队-LiWanghong本文首先介绍了Disruptor高性能内存队列的基本概念、使用Demo、高性能原理及源码分析,最后通过两个例子介绍了Disruptor在i主题业务中的应用。一、i主题及Disruptor简介i主题是vivo旗下的一款主题商店app,用户可以通过下......
  • 恶补基础知识:Java 栈与队列详解
    @目录前言简介栈Java实现栈的示例代码:栈的主要应用场景包括:队列Java实现队列的示例代码:LinkedList中的add方法和offer方法的区别队列主要应用场景:总结前言请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、提示:以下是本篇文章正文内容,下面案例可供参考简介使用Java实......
  • 假设Sigmund Landers在商业街设置了一个提供建议的摊位,顾客可以购买1分钟,2分钟,或3分钟
    /假设SigmundLanders在商业街设置了一个提供建议的摊位,顾客可以购买1分钟,2分钟,或3分钟的建议,为确保交通每个摊位前排队等待的顾客最多10人,用两个队列模拟两个摊位/#include<stdio.h>#include<stdlib.h>#defineMAX_SIZE10typedefstruct{intitems[MAX_SIZE];......
  • 如何保证数据不丢失?(死信队列)
    死信队列1、什么是死信死信通常是消息在特定的场景下表现:消息被拒绝访问消费者发生异常,超过重试次数消息的Expiration过期时间过长或者队列TTL过期时间消息队列到达最大容量maxLength2、什么是死信队列用来存储死信的队列,并且队列中只由死信构成的消息队列是死信队列......
  • RabbitMQ消息队列
    消息队列概念什么是消息队列消息(Message)是指在应用间传送的数据消息队列(MessageQueue)是一种应用间的通信方式解决方法,确保消息的可靠传递、主流消息队列目前主流的几大消息1队列有:RabitMQ、ActiveMQ、RocketMQ、Kafka、ZeroMQ等,也有一些小众的比如Beanstalk、当然我......
  • RabbitMQ消息队列
    一:RabbitMQ介绍RabbitMQ是一款在全球范围内使用非常广泛的开源消息队列中间件。它轻量级、易部署、并支持多种协议。它基于Erlang开发,天生拥有高并发的能力。1:RabbitMQ相关术语(1)生产者产生消息的进程或服务(2)消费者接收消息的进程或服务(3)队列RabbitMQ是消息队列中间件,而......
  • 代码随想录day29 || 134 加油站,135 分糖果,860 柠檬水找零,406 根据身高重建队列
    加油站funccanCompleteCircuit(gas[]int,cost[]int)int{ //思路,首先统计一个差值数组,表示行驶到下一个加油站可以补充的油量,然后加总差值数组, //如果小于0,表示从起始位置到目前为止剩余油量小于0,不足以跑完全程,同时将起始位置放到遍历的下一个位置 iflen(gas)==0......