namespace LSServerService { using System; using System.Collections.Generic; using System.Threading; internal static class LSQueueManage { private static Queue LSSocketRevQueue = new Queue(); private static AutoResetEvent Rev_Event = new AutoResetEvent(true); public static LSSocketRev GetSocketRevData() { LSSocketRev socketRevData = null; if (LSSocketRevQueue.Count > 0) { lock (LSSocketRevQueue) { socketRevData = LSSocketRevQueue.Dequeue(); } } else { Rev_Event.WaitOne(); } if (socketRevData == null) { socketRevData = GetSocketRevData(); } return socketRevData; } public static void InsertSocketRevData(LSSocketRev socketRev) { lock (LSSocketRevQueue) { LSSocketRevQueue.Enqueue(socketRev); } Rev_Event.Set(); } public static int LSSocketRevQueueCount { get { return LSSocketRevQueue.Count; } } } }