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

C#队列消息延时打印实践

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

实现目标:

(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< seconds*100000000;i++)
            {

            }
        }
         static void Main()
        {
            Queue queue = new Queue();
            for (int i = 0; i < 10; i++)
            {
                queue.Enqueue("哈喽");
            }

            Console.WriteLine("遍历方法1:");
            foreach (object i in queue)
            {
                Console.WriteLine(i);
                SleepTime(10);
            }
            Console.WriteLine();
            Console.WriteLine("***************************************");

            Console.WriteLine("遍历方法2:");
            object[] array1 = queue.ToArray();
            for (int i = 0; i < array1.Length; i++)
            {
                Console.WriteLine(array1[i]);
                SleepTime(10);
            }
            Console.WriteLine();
            Console.WriteLine("***************************************");

            Console.WriteLine("遍历方法3:");
            while (queue.Count > 0)
            {
                Console.WriteLine(queue.Dequeue());
                SleepTime(10);
            }
            Console.WriteLine();
            Console.WriteLine("***************************************");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值