Compare commits

...

10 Commits

Author SHA1 Message Date
Neil Dorin
e94ea0a118 Merge branch 'development' into hotfix/genericqueue-dispose-issue 2021-04-08 14:44:04 -06:00
Neil Dorin
be41922c54 Merge pull request #679 from PepperDash/feature/plugin-loading-issues
Clean up messaging
2021-04-08 14:43:43 -06:00
Neil Dorin
de446e2d14 Merge branch 'development' into hotfix/genericqueue-dispose-issue 2021-04-08 14:43:05 -06:00
Andrew Welker
56f93c5491 Merge branch 'main' into hotfix/genericqueue-dispose-issue 2021-04-08 14:25:11 -06:00
Andrew Welker
8cfd58bb7e Fix error printing for plugin loading 2021-04-08 14:21:32 -06:00
Andrew Welker
6ddfdc4b38 Updating plugin loading mechanism to provide better feedback 2021-04-08 13:54:06 -06:00
Neil Dorin
200080247a closes #671 and changes to aborting thread in Dispose instead of attempting to join 2021-04-06 10:38:39 -06:00
Neil Dorin
b6f47168c0 Merge pull request #676 from PepperDash/hotfix/stream-debug-console-issues
Fix FormatException happening from fall-through
2021-04-06 10:01:07 -06:00
Neil Dorin
2feec62052 Removes explicit call to dispose when program stops. Clears queue in dispose 2021-03-31 16:35:33 -06:00
Neil Dorin
955d68b3f3 #671 switches to private Dispose() on program stop 2021-03-30 15:56:05 -06:00
2 changed files with 45 additions and 16 deletions

View File

@@ -358,14 +358,27 @@ namespace PepperDash.Essentials
try
{
var assy = loadedAssembly.Assembly;
var types = assy.GetTypes();
CType[] types = {};
try
{
types = assy.GetTypes();
}
catch (TypeLoadException e)
{
Debug.Console(0, Debug.ErrorLogLevel.Warning, "Unable to get types for assembly {0}: {1}",
loadedAssembly.Name, e.Message);
Debug.Console(2, e.StackTrace);
continue;
}
foreach (var type in types)
{
try
{
if (typeof(IPluginDeviceFactory).IsAssignableFrom(type))
if (typeof (IPluginDeviceFactory).IsAssignableFrom(type))
{
var plugin = (IPluginDeviceFactory)Crestron.SimplSharp.Reflection.Activator.CreateInstance(type);
var plugin =
(IPluginDeviceFactory) Crestron.SimplSharp.Reflection.Activator.CreateInstance(type);
LoadCustomPlugin(plugin, loadedAssembly);
}
else
@@ -378,18 +391,24 @@ namespace PepperDash.Essentials
}
}
}
catch (NotSupportedException e)
{
//this happens for dlls that aren't PD dlls, like ports of Mono classes into S#. Swallowing.
}
catch (Exception e)
{
Debug.Console(2, "Load Plugin not found. {0}.{2} is not a plugin factory. Exception: {1}",
loadedAssembly.Name, e, type.Name);
continue;
loadedAssembly.Name, e.Message, type.Name);
}
}
}
catch (Exception e)
{
Debug.Console(2, "Error Loading Assembly: {0} Exception: {1} ", loadedAssembly.Name, e);
Debug.Console(0, Debug.ErrorLogLevel.Warning, "Error Loading assembly {0}: {1}",
loadedAssembly.Name, e.Message);
Debug.Console(2, "{0}", e.StackTrace);
continue;
}
}

View File

@@ -14,7 +14,7 @@ namespace PepperDash.Essentials.Core.Queues
protected readonly CrestronQueue<IQueueMessage> _queue;
protected readonly Thread _worker;
protected readonly CEvent _waitHandle = new CEvent();
private bool _delayEnabled;
private int _delayTime;
@@ -155,10 +155,10 @@ namespace PepperDash.Essentials.Core.Queues
if (programEvent != eProgramStatusEventType.Stopping)
return;
Dispose();
Dispose(true);
};
}
/// <summary>
/// Thread callback
/// </summary>
@@ -231,8 +231,13 @@ namespace PepperDash.Essentials.Core.Queues
if (disposing)
{
Enqueue(null);
_worker.Join();
Debug.Console(2, this, "Disposing...");
if (_queue != null && !_queue.Disposed)
{
_queue.Clear();
Enqueue(null);
}
_worker.Abort();
_waitHandle.Close();
}
@@ -241,7 +246,7 @@ namespace PepperDash.Essentials.Core.Queues
~GenericQueue()
{
Dispose(false);
Dispose(true);
}
/// <summary>
@@ -407,7 +412,7 @@ namespace PepperDash_Essentials_Core.Queues
if (programEvent != eProgramStatusEventType.Stopping)
return;
Dispose();
Dispose(true);
};
}
@@ -477,8 +482,13 @@ namespace PepperDash_Essentials_Core.Queues
if (disposing)
{
Enqueue(null);
_worker.Join();
Debug.Console(2, this, "Disposing...");
if (_queue != null && !_queue.Disposed)
{
_queue.Clear();
Enqueue(null);
}
_worker.Abort();
_waitHandle.Close();
}
@@ -487,7 +497,7 @@ namespace PepperDash_Essentials_Core.Queues
~GenericQueue()
{
Dispose(false);
Dispose(true);
}
/// <summary>