using System.Text; namespace SWModules { public sealed class MessageQueue : FIFOQueue { private const int depth = 128; public const int width = 512; private MessageQueue() : base(depth, width) { } private static MessageQueue _instance; public static MessageQueue Instance { get { _instance = _instance ?? (new MessageQueue()); return _instance; } } private QRecord _qRecord; private const byte MaxQueueProcess = 16; /// /// /// public override void processQ() { for (byte i = 0; i < MaxQueueProcess; i++) { if (Count <= 0) break; _qRecord = Dequeue(); _qRecord.processMessage(_qRecord); } } StringBuilder sbTemp = new StringBuilder(256); public StringBuilder procesQManually() { QRecord qRecord = new QRecord(); sbTemp.Clear(); if (Count > 0) { qRecord = Dequeue(); sbTemp.Append(SafeEncoding.GetChars(qRecord.byteArray, 0, 256)); } return sbTemp; } } }