zoukankan      html  css  js  c++  java
  • c#Queue队列的使用

    消息队列

    队列(System.Collections.Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。存储在 Queue(队列) 中的对象在一端插入,从另一端移除。

    Queue的方法
    方法名 注释
    Void Clear()  从 Queue 中移除所有对象。
     Bool Contains(object obj)  确定某元素是否在 Queue 中。
     Object Clone()  创建 Queue 的浅表副本。
     Void CopyTo(Array array,int index)  从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。
     Object Dequeue()  移除并返回位于 Queue 开始处的对象。
     Void Enqueue(object obj)  将对象添加到 Queue 的结尾处。
     Object Peek()  返回位于 Queue 开始处的对象但不将其移除。
     Object[] ToArray()  将 Queue 元素复制到新数组。
     Void TrimToSize()  将容量设置为 Queue 中元素的实际数目。

    示例代码:


    class
    Program { //定义一个消息队列 static Queue<string> qs = new Queue<string>(); static System.Threading.Timer timer; //处理消息队列中的数据 private static void toDoData(object state) { List<string> qsList = new List<string>(); if (qs.Count > 0) { while (true) { string item = null; try { //根据先进先出的原则,移除队列中的数据
                   //如果在调用Dequeue()方法时,队列中不再有元素,就抛出一个InvalidOperationException类型的异常。所以需要try-catch捕获异常
    item = qs.Dequeue(); } catch { } if (item != null) { qsList.Add(item); } else { break; } } //打印出每次处理的数据 string doResultStr = string.Join(",", qsList); Console.WriteLine(doResultStr+ " "); if (doResultStr.Contains("101")) { //Timeout.Infinite极大的,把计时器的间隔执行时间设为无穷大,相当于将计时器给暂用了。 timer.Change(1,Timeout.Infinite); } } } static void Main(string[] args) { //每隔一秒执行移除队列 timer = new Timer(toDoData, null, 1000, 1000); ProductData(); Console.ReadKey(); } //模拟不断返回的数据(现在面临回调函数不断返回数据) private static void ProductData() { for (int i = 0; i < 10000; i++) { Thread.Sleep(200); //添加数据到队列的末端 qs.Enqueue(string.Format("这是第{0}条数据",i)); } } }

    Dequeue方法执行前:队列包含第22条数据

    Dequeue方法执行后:队列移除了第22条数据

    item是被移除的数据,开发人员方便对它进行操作

    执行结果如下:

  • 相关阅读:
    CocoaPods 中删除不需要的第三方
    真机测试是提示 的 iPhone is busy: Preparing debugger support for
    关于 Expression is not assignable 错误
    关于查询ios的app更新的历史版本记录
    ios开启双重认证之填坑式教学
    swift 有道 翻译文档(2 条件语句 循环语句)
    swift 有道 翻译文档(1 定义变量常量,数组字典)
    渐变UI
    cornerstone 使用
    cocoaPods安装
  • 原文地址:https://www.cnblogs.com/likui-bookHouse/p/10981272.html
Copyright © 2011-2022 走看看