Main Page | Class Hierarchy | Class List | File List | Class Members

SmartDeviceClient/Common/MessageQueue.cs

00001 using System;
00002 
00003 namespace GPRSWeb.SmartDeviceClient.Common
00004 {
00008         public class MessageQueue : Queue
00009         {
00011                 public MessageQueue() : base() {}
00012                 
00014                 public Message DequeueNonBlocking() {
00015                         return (Message)Dequeue();
00016                 }
00017 
00018                 public Message DequeueBlocking() {
00019                         Message result;
00020                         lock (SyncRoot) {
00021                                 while (Count == 0) {
00022                                         Monitor.Wait(SyncRoot);
00023                                 }
00024                                 result = DequeueNonBlocking();
00025                         }
00026                         return result;
00027                 }
00028 
00029                 public void EnqueueNonBlocking(Message msg) {
00030                         Enqueue(msg);
00031                         Monitor.PulseAll(SyncRoot);
00032                 }
00033 
00034                 public void EnqueueBlocking(Message msg) {
00035                         lock(SyncRoot) {
00036                                 EnqueueNonBlocking(msg);
00037                         }
00038                 }
00039         }
00040 }

Generated on Mon May 8 22:07:27 2006 by  doxygen 1.3.9.1