From 73cd2cefce2fcb9df7037b35e4c85a0cc61c631a Mon Sep 17 00:00:00 2001 From: sta Date: Mon, 17 Mar 2014 04:04:17 +0900 Subject: [PATCH] Fix a few for Example, Example1 --- Example/Notifier.cs | 19 ++++++++++++------- Example1/Notifier.cs | 19 ++++++++++++------- Example1/Program.cs | 1 - 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/Example/Notifier.cs b/Example/Notifier.cs index 4a25cc5a..1ed581af 100644 --- a/Example/Notifier.cs +++ b/Example/Notifier.cs @@ -12,20 +12,21 @@ namespace Example { private volatile bool _enabled; private Queue _queue; + private object _sync; private ManualResetEvent _waitHandle; public Notifier () { _enabled = true; _queue = new Queue (); + _sync = ((ICollection) _queue).SyncRoot; _waitHandle = new ManualResetEvent (false); ThreadPool.QueueUserWorkItem ( state => { while (_enabled || Count > 0) { - Thread.Sleep (500); - if (Count > 0) { - var msg = dequeue (); + var msg = dequeue (); + if (msg != null) { #if UBUNTU var nf = new Notification (msg.Summary, msg.Body, msg.Icon); nf.AddHint ("append", "allowed"); @@ -34,6 +35,8 @@ namespace Example Console.WriteLine (msg); #endif } + else + Thread.Sleep (500); } _waitHandle.Set (); @@ -42,7 +45,7 @@ namespace Example public int Count { get { - lock (((ICollection) _queue).SyncRoot) { + lock (_sync) { return _queue.Count; } } @@ -50,8 +53,10 @@ namespace Example private NotificationMessage dequeue () { - lock (((ICollection) _queue).SyncRoot) { - return _queue.Dequeue (); + lock (_sync) { + return _queue.Count > 0 + ? _queue.Dequeue () + : null; } } @@ -64,7 +69,7 @@ namespace Example public void Notify (NotificationMessage message) { - lock (((ICollection) _queue).SyncRoot) { + lock (_sync) { if (_enabled) _queue.Enqueue (message); } diff --git a/Example1/Notifier.cs b/Example1/Notifier.cs index f291e8c5..87ebce05 100644 --- a/Example1/Notifier.cs +++ b/Example1/Notifier.cs @@ -12,20 +12,21 @@ namespace Example1 { private volatile bool _enabled; private Queue _queue; + private object _sync; private ManualResetEvent _waitHandle; public Notifier () { _enabled = true; _queue = new Queue (); + _sync = ((ICollection) _queue).SyncRoot; _waitHandle = new ManualResetEvent (false); ThreadPool.QueueUserWorkItem ( state => { while (_enabled || Count > 0) { - Thread.Sleep (500); - if (Count > 0) { - var msg = dequeue (); + var msg = dequeue (); + if (msg != null) { #if UBUNTU var nf = new Notification (msg.Summary, msg.Body, msg.Icon); nf.AddHint ("append", "allowed"); @@ -34,6 +35,8 @@ namespace Example1 Console.WriteLine (msg); #endif } + else + Thread.Sleep (500); } _waitHandle.Set (); @@ -42,7 +45,7 @@ namespace Example1 public int Count { get { - lock (((ICollection) _queue).SyncRoot) { + lock (_sync) { return _queue.Count; } } @@ -50,8 +53,10 @@ namespace Example1 private NotificationMessage dequeue () { - lock (((ICollection) _queue).SyncRoot) { - return _queue.Dequeue (); + lock (_sync) { + return _queue.Count > 0 + ? _queue.Dequeue () + : null; } } @@ -64,7 +69,7 @@ namespace Example1 public void Notify (NotificationMessage message) { - lock (((ICollection) _queue).SyncRoot) { + lock (_sync) { if (_enabled) _queue.Enqueue (message); } diff --git a/Example1/Program.cs b/Example1/Program.cs index 30776db3..b413999d 100644 --- a/Example1/Program.cs +++ b/Example1/Program.cs @@ -18,7 +18,6 @@ namespace Example1 while (name.Length == 0); streamer.Connect (name); - Console.WriteLine ("\nType \"exit\" to exit.\n"); while (true) { Thread.Sleep (1000);