C# 队列 Queue
来源:互联网 发布:asp sql 仓库管理系统 编辑:程序博客网 时间:2024/06/08 15:22
queue队列:先进先出
Queue类的成员说明
Count队列中元素的个数
Enqueue队列的一端添加一个元素
Dequeue在队里饿的头部读取和删除一个元素(如果没有元素时调用.会排出异常)
Peek从队里饿的头部读取一个元素,但不删除它
TrimExcess重新设置队列的容量.
文档类 文档处理类
public class Document { public string Title { get; set; } public string Content { get; set; } public Document(string title,string content) { this.Title = title; this.Content = content; } } public class DocumentManager { private readonly Queue<Document> documentQueue = new Queue<Document>(); public void AddDocument(Document doc) { lock (this) { documentQueue.Enqueue(doc); } } public Document GetDocument() { Document doc = null; lock (this) { doc = documentQueue.Dequeue(); } return doc; } public bool IsDocumentAvailable { get { return documentQueue.Count > 0; } } } public class ProcessDocuments { public static void Start(DocumentManager dm) { Task.Factory.StartNew(new ProcessDocuments(dm).Run); } protected ProcessDocuments(DocumentManager dm) { if (dm==null) { throw new ArgumentNullException("dm"); } documentManager = dm; } private DocumentManager documentManager; protected void Run() { while (true) { if (documentManager.IsDocumentAvailable) { Document doc = documentManager.GetDocument(); Console.WriteLine("Processing document {0}",doc.Title); } Thread.Sleep(new Random().Next(2000)); } } }
Main()
static void Main(string[] args) { var dm = new DocumentManager(); ProcessDocuments.Start(dm); for (int i = 0; i < 20; i++) { var doc = new Document("Doc"+i.ToString(),"Content"); dm.AddDocument(doc); Console.WriteLine("Added document {0}",doc.Title); Thread.Sleep(new Random().Next(4000)); } Console.ReadKey(); }
DocumentManager:处理文档,addDocument,getDocument
ProcessDocument类,一个单独的任务重处理队列中的文档.外部访问的唯一方法Start().方法中实例化一个新任务,创建一个ProcessDocument对象.定义Run()方法作为任务的启动方法.
TaskFactory的StartNew方法需要一个Action委托作为参数.勇于接受Run方法传递的地址.
Run()定义了一个无限循环,先用IsDOucmentAvailable判断队列中是否有文档.悠久从DocumentManager中提取文档并处理(写入文件,数据库,发送等操作).
在Main()方法中.实例化了一个DocumentManager对象.启动文档处理任务,创建文档并添加到DocumentManager对象中
启动任务时,会在队列中添加和删除文档
阅读全文
0 0
- C#队列Queue详解
- C# 队列(Queue)
- C# 浅析Queue队列
- C#队列(Queue)
- C# 队列(Queue)
- C# 队列 QUEUE
- C#数据结构--队列Queue
- C# 队列 Queue
- Queue-C#数组构建队列
- C# 的Queue 队列方法
- C#队列,优先级,Queue类
- C# 队列(Queue)基础
- c# Queue 队列的使用
- c#中queue队列用法
- c# Queue 先进先出队列
- c#中 Queue队列类 理解
- C#队列Queue用法实例分析
- queue队列-printer queue
- 客户管理系统对企业管理的4大帮助
- 负载均衡比较分析
- CuteFTP 9破解 教程
- php在数组的指定位置插入或替换值
- 简单配置nginx
- C# 队列 Queue
- Effect框架
- altera DCFIFO IP核 功能仿真
- php正则匹配文章中的远程图片地址并下载图片到本地
- PhpStorm更换主题
- nginx下如何配置 ssl证书?腾讯云ssl证书为例!
- 解决小米手机Installation failed with message Failed to establish session.
- laravel 网银支付
- Right Click Menu Lag on my pc