using System; using System.Threading; using System.Collections.Generic; namespace WorldOfPeacecraft { public class Parser { private Queue Buffer = new Queue (); private AutoResetEvent BufferFilledEvent = new AutoResetEvent (false); private Thread ParserThread; private List message; public Parser () { ParserThread = new Thread (new ThreadStart (this.RunParser)); message = new LinkedList (); } public void RunParser () { while (true) { bool waitRequired = false; lock (Buffer) { if (Buffer.Count == 0) { waitRequired = true; BufferFilledEvent.Reset (); } } if (waitRequired) BufferFilledEvent.WaitOne (); lock (Buffer) { message.Add (Buffer.Dequeue ()); } } } public static void Parse (List message) { // TODO Implement } public void Stop () { ParserThread.Abort (); } public void AddToBuffer (string s) { lock (Buffer) { Buffer.Enqueue (s); BufferFilledEvent.Set (); } } } }