=====================================Document.cs

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication2{publicclassDocument//文本类{//标题publicstringTitle{get;privateset;}//内容publicstringContent{get;privateset;}publicDocument(stringtitle,stringcontent){this.Title=title;this.Content=content;}publicoverridestringToString(){returnstring.Format("标题:{0};内容:{1};",this.Title,this.Content);}}}

=====================================DocumentManage.cs

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Collections;namespaceConsoleApplication2{publicclassDocumentManage//文本操作类{Queue<Document>doc=newQueue<Document>();//向队列中添加元素publicvoidAddDocument(Documentd){lock(this)//同步操作doc.Enqueue(d);}//读取头元素,并删除publicDocumentGetDocument(){lock(this)returndoc.Dequeue();}//判断队列中有没有元素publicboolIsAvailableDocument{get{returndoc.Count>0;}}}}

=====================================ProcessDocument.cs

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Threading;namespaceConsoleApplication2{publicclassProcessDocument//开启线程读取文档中的元素{privateDocumentManagedm;publicProcessDocument(DocumentManaged){dm=d;}///<summary>///开启线程读取文档中的元素///</summary>///<paramname="d"></param>publicstaticvoidStart(DocumentManaged){newThread(newProcessDocument(d).Run).Start();}privatevoidRun(){while(true){if(dm.IsAvailableDocument)//判断队列中有没有元素{Console.WriteLine(dm.GetDocument().ToString());}}}}}

=====================================主程序

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication2{classProgram{staticvoidMain(string[]args){DocumentManagedm=newDocumentManage();ProcessDocument.Start(dm);//开启线程读取文档for(inti=0;i<10000;i++)//向队列中添加10000个元素{Documentdoc=newDocument(i.ToString(),i.ToString());dm.AddDocument(doc);Console.WriteLine(doc.ToString()+".....New");}Console.ReadKey();}}}