#671 Updates to GenericQueue to resolve issues when stopping program

This commit is contained in:
Neil Dorin
2021-04-02 17:07:06 -06:00
parent e327d2d359
commit 037f8ed043

View File

@@ -150,13 +150,13 @@ namespace PepperDash.Essentials.Core.Queues
_delayEnabled = pacing > 0;
_delayTime = pacing;
//CrestronEnvironment.ProgramStatusEventHandler += programEvent =>
//{
// if (programEvent != eProgramStatusEventType.Stopping)
// return;
CrestronEnvironment.ProgramStatusEventHandler += programEvent =>
{
if (programEvent != eProgramStatusEventType.Stopping)
return;
// Dispose(true);
//};
Dispose(true);
};
}
/// <summary>
@@ -232,9 +232,20 @@ namespace PepperDash.Essentials.Core.Queues
if (disposing)
{
Debug.Console(2, this, "Disposing...");
_queue.Clear();
Enqueue(null);
_worker.Join();
if (_queue != null && !_queue.Disposed)
{
_queue.Clear();
Enqueue(null);
}
//else
//{
// if (_queue == null)
// Debug.Console(2, this, "_queue is null");
// else
// Debug.Console(2, this, "_queue disposed: {0}", _queue.Disposed);
//}
//_worker.Join();
_worker.Abort();
_waitHandle.Close();
}
@@ -404,13 +415,13 @@ namespace PepperDash_Essentials_Core.Queues
_delayEnabled = pacing > 0;
_delayTime = pacing;
//CrestronEnvironment.ProgramStatusEventHandler += programEvent =>
//{
// if (programEvent != eProgramStatusEventType.Stopping)
// return;
CrestronEnvironment.ProgramStatusEventHandler += programEvent =>
{
if (programEvent != eProgramStatusEventType.Stopping)
return;
// Dispose(true);
//};
Dispose(true);
};
}
/// <summary>
@@ -480,9 +491,20 @@ namespace PepperDash_Essentials_Core.Queues
if (disposing)
{
Debug.Console(2, this, "Disposing...");
_queue.Clear();
Enqueue(null);
_worker.Join();
if (_queue != null && !_queue.Disposed)
{
_queue.Clear();
Enqueue(null);
}
//else
//{
// if (_queue == null)
// Debug.Console(2, this, "_queue is null");
// else
// Debug.Console(2, this, "_queue disposed: {0}", _queue.Disposed);
//}
//_worker.Join();
_worker.Abort();
_waitHandle.Close();
}