当前位置: 首页 > news >正文

C#编程练习:使用队列存储消息,一次性存10条消息,每隔一段时间打印一条消息控制台打印消息时要有明显停顿感 - 详解

一、任务:使用队列存储消息

实现目标:

(1)一次性存10条消息

(2)每隔一段时间打印一条消息控制台打印消息时要有明显停顿感


二、核心代码结构

1. 延时方法

public static void SleepTime(int seconds)
{
for(int i = 0; i < seconds * 100000000; i++) { }
}

2. 消息队列初始化

Queue queue = new Queue();
for (int i = 0; i < 10; i++)
{
queue.Enqueue("哈喽"); // 入队10条消息
}

三、三种遍历方式对比

方法1:foreach遍历(只读)

foreach (object i in queue)
{
Console.WriteLine(i);
SleepTime(10); // 延时效果
}

特点:不修改队列结构

输出:按FIFO顺序输出

队列状态:遍历后队列仍包含10条消息

方法2:ToArray转换后遍历

object[] array1 = queue.ToArray();
for (int i = 0; i < array1.Length; i++)
{
Console.WriteLine(array1[i]);
SleepTime(10);
}

特点:将队列转为数组后遍历

输出:按FIFO顺序输出

队列状态:原队列不受影响

方法3:Dequeue出队遍历(消费型)

while (queue.Count > 0)
{
Console.WriteLine(queue.Dequeue()); // 出队操作
SleepTime(10);
}

特点:边遍历边移除元素

输出:按FIFO顺序输出

队列状态:遍历后队列为空


四、完整代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace 进阶测试
{
class Program
{
public static void SleepTime(int seconds)//明显停顿时间
{
for(int i=0;i 0)
{
Console.WriteLine(queue.Dequeue());
SleepTime(10);
}
Console.WriteLine();
Console.WriteLine("***************************************");
}
}
}
http://www.jsqmd.com/news/1821/

相关文章:

  • 23
  • 9.16 总结
  • Halcon抛出异常日志
  • [PaperReading] Mind Search: Mimicking Human Minds Elicits Deep AI Searcher
  • Automatically Naming the Screenshots to Steam
  • 穷举法(c语言版)
  • ZYNQ PS 端 UART 接收数据素材帧(初学者友好版)嵌入式编程 C语言 c++ 软件开发
  • 01 Tasking IDE软件安装及新建工程
  • 详细介绍:深入理解Kafka事务
  • 能碳园区 / 工厂系统 - 智慧园区
  • 代码随想录算法训练营第五天 |242.有效的字母异位词、349. 两个数组的交集、第202题. 快乐数、1. 两数之和
  • Python - GaussDB table sync to Hive
  • Photoshop 2025 v26.0(PS2025)下载安装教程(含一键安装包下载)
  • 网络加速原理
  • 无意中在应用层瞥见了一个微内核的操作系统调度器
  • 数据结构思维题选做(长期更新)
  • 政治笔记/错题
  • 9.22模拟赛总结
  • 莫队 n的序列,多次查询一段区间内的数字的个数
  • 【mysql】mysql客户端中文显示乱码
  • 很烦不知道 自己以后要做什么,工作不会很稳定。感觉有很多东西要学习 但是 也有很多东西 不会 不知道咋办了
  • 揭秘“牛牛透视”
  • 2- 不知道自己现在做的对不对,有没有浪费掉自己的才华 也许自己是一个天才马术 但是没有资源只能 这样
  • k8s系列--资源清单yml文件
  • k8s系列--容器生命周期
  • k8s系列(14)--探针检测
  • k8s系列--控制器yml(15)
  • 从 Web 到 LLM,多入口、多链路的自动化威胁如何防护? - 详解
  • 学生管理系统案例初步分析报告
  • 【mysql】mysql5.6 版本修改用户的登录