你的位置:首页 > ASP.net教程

[ASP.net教程]ConcurrentQueue对列的基本使用方式


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

  ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。

 1 对列初始化: 2  3 ConcurrentQueue<ApiLogContract> Queue = new ConcurrentQueue<ApiLogContract>(); 4  5 /// <summary> 6 /// 单条入队列 7 /// </summary> 8 /// <param name="model">入列模型</param> 9 10 Queue.Enqueue(model);11 12 13 14 /// <summary>15 /// 多条入队16 /// </summary>17 /// <param name="list"></param>18 19 List<ApiLogContract> list = new List<ApiLogContract>();20 21 list.add(new model{});22 23 list.add(new model{});24 25 list.add(new model{});26 27 list.add(new model{});28 29 list.ForEach(t => Enqueue(t));30 31 32 33 /// <summary>34 /// 单条出队35 /// </summary>36 /// <returns></returns>37 38 ApiLogContract apiLog = null;39 Queue.TryDequeue(out apiLog);40 41 42 43 /// <summary>44 /// 多条出队45 /// </summary>46 /// <param name="count">数量</param>47 /// <returns></returns>48 49 var logs = new List<ApiLogContract>();50 51 if (Queue.Count > 0)52 {53   for (int i = 0; i < count; i++)54   {55     var source = Dequeue();56     if (source != null)57     {58       logs.Add(source);59     }60   }61 }

/// <summary>/// 获取对列数量/// </summary>/// <returns></returns>Queue.Count

以上就是对列的基本使用方法。

对列的使用场景有很多。所有要异步处理的都可以使用对列的方式。如接口日志异步处理,邮件、短信异步发送等。对列一般配合单例设计模式和线程一起使用更佳。