队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。
ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。

11 对列初始化: 2 2 3 3 ConcurrentQueue<ApiLogContract> Queue = new ConcurrentQueue<ApiLogContract>(); 4 4 5 5 /// <summary> 6 6 /// 单条入队列 7 7 /// </summary> 8 8 /// <param name="model">入列模型</param> 9 9 1010 Queue.Enqueue(model); 1111 1212 1313 1414 /// <summary> 1515 /// 多条入队 1616 /// </summary> 1717 /// <param name="list"></param> 1818 1919 List<ApiLogContract> list = new List<ApiLogContract>(); 2020 2121 list.add(new model{}); 2222 2323 list.add(new model{}); 2424 2525 list.add(new model{}); 2626 2727 list.add(new model{}); 2828 2929 list.ForEach(t => Enqueue(t)); 3030 3131 3232 3333 /// <summary> 3434 /// 单条出队 3535 /// </summary> 3636 /// <returns></returns> 3737 3838 ApiLogContract apiLog = null; 3939 Queue.TryDequeue(out apiLog); 4040 4141 4242 4343 /// <summary> 4444 /// 多条出队 4545 /// </summary> 4646 /// <param name="count">数量</param> 4747 /// <returns></returns> 4848 4949 var logs = new List<ApiLogContract>(); 5050 5151 if (Queue.Count > 0) 5252 { 5353 for (int i = 0; i < count; i++) 5454 { 5555 var source = Dequeue(); 5656 if (source != null) 5757 { 5858 logs.Add(source); 5959 } 6060 } 6161 }


1/// <summary> 2/// 获取对列数量 3/// </summary> 4/// <returns></returns> 5Queue.Count 6 7 8 9/// <summary> 10/// 确定序列是否包含任何元素[用于判断对列是否有要处理的数据]这个方法的性能比Count()方法快 11/// </summary> 12/// <returns></returns> 13 14Queue.Any()

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