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 }