C#消息队列-初见

本文详细介绍了使用.NET Framework下的System.Messaging命名空间进行消息队列(MQ)的安装、初始化、写入、读取及删除操作。通过具体代码示例,展示了如何在本地创建消息队列,发送与接收消息,以及如何管理和清空队列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.MQ安装-https://jingyan.baidu.com/article/a17d5285df9d3e8099c8f247.html

2.using System.Messaging;

3.实际操作

  初始化

     private MessageQueue messageQueue = null;
        //消息的地址 本地和网络不一样
        private string path = @".\Private$\MyQueues";

        private void Form1_Load(object sender, EventArgs e)
        {
            //存在就实例化不存在就新建
            if (MessageQueue.Exists(path))
                messageQueue = new MessageQueue(path);
            else
                messageQueue = MessageQueue.Create(path);
            messageQueue.Label = "test messagequeue";
            messageQueue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
        }

  写入

            //发送消息 内容和名称
            messageQueue.Send(this.txt_text.Text, this.txt_title.Text);
            btn_read_Click(sender, e);    

  读取

            //读取所有名称
            this.listBox1.Items.Clear();


            //GetMessageEnumerator2
            var item = messageQueue.GetMessageEnumerator2();
            while (item.MoveNext())
            {
                this.listBox1.Items.Add(item.Current.LookupId + "," + item.Current.Label + "," + item.Current.Body.ToString());

                //一般情况下,处理完消息就删除掉避免再次处理
                //item.RemoveCurrent();
            }    

  删除单条

             if (this.listBox1.SelectedIndex > 0)
            {
                long msgid = Convert.ToInt64(this.listBox1.Items[this.listBox1.SelectedIndex].ToString().Split(',')[0]);
                var item = messageQueue.GetMessageEnumerator2();
                item.MoveNext();
                for (long i = item.Current.LookupId; i < msgid; i++)
                {
                    item.MoveNext();
                }
                item.RemoveCurrent();
                btn_read_Click(sender, e);
            }         

  清空

            //清除所有消息
            messageQueue.Purge();
            this.listBox1.Items.Clear();     

  

转载于:https://www.cnblogs.com/jy8888/p/11045039.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值