From 65747b6ad296b57e639b5f58d793ca931e0cb544 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Mon, 25 Jan 2021 10:55:27 -0700 Subject: [PATCH] #560 Adds constructors with priority and fixed debug statments to use error log --- .../Queues/GenericQueue.cs | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Queues/GenericQueue.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Queues/GenericQueue.cs index 1f27fe1e..05757213 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Queues/GenericQueue.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Queues/GenericQueue.cs @@ -15,23 +15,36 @@ namespace PepperDash_Essentials_Core.Queues protected readonly Thread _worker; protected readonly CEvent _waitHandle = new CEvent(); - private readonly bool _delayEnabled; - private readonly int _delayTime; + private bool _delayEnabled; + private int _delayTime; /// /// If the instance has been disposed. /// public bool Disposed { get; private set; } + /// + /// Constructor with no thread priority + /// + /// + public GenericQueue(string key) + : this(key, Thread.eThreadPriority.NotSet) + { + + } + /// /// Constructor for generic queue with no pacing /// /// Key - public GenericQueue(string key) + public GenericQueue(string key, Thread.eThreadPriority priority) { _key = key; _queue = new CrestronQueue(); - _worker = new Thread(ProcessQueue, null, Thread.eThreadStartOptions.Running); + _worker = new Thread(ProcessQueue, null, Thread.eThreadStartOptions.Running) + { + Priority = priority + }; CrestronEnvironment.ProgramStatusEventHandler += programEvent => { @@ -49,11 +62,28 @@ namespace PepperDash_Essentials_Core.Queues /// Pacing in ms between actions public GenericQueue(string key, int pacing) : this(key) + { + SetDelayValues(pacing); + } + + /// + /// Constructor with pacing and priority + /// + /// + /// + /// + public GenericQueue(string key, int pacing, Thread.eThreadPriority priority) + : this(key, priority) + { + SetDelayValues(pacing); + } + + private void SetDelayValues(int pacing) { _delayEnabled = pacing > 0; _delayTime = pacing; } - + /// /// Thread callback /// @@ -83,7 +113,7 @@ namespace PepperDash_Essentials_Core.Queues } catch (Exception ex) { - Debug.ConsoleWithLog(0, this, "Caught an exception in the Queue {0}\r{1}\r{2}", ex.Message, ex.InnerException, ex.StackTrace); + Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Caught an exception in the Queue {0}\r{1}\r{2}", ex.Message, ex.InnerException, ex.StackTrace); } } else _waitHandle.Wait();