Add ConfigMonitor instance to refresh/reload the config when it changes.

Added logger reference to increase logging around start/stop commands of the service.
#54
This commit is contained in:
Chris.Watts90@outlook.com 2017-03-01 16:51:44 +00:00
parent 40d4d7b1f7
commit e246c2e47c

View File

@ -2,6 +2,7 @@
using System.Diagnostics;
using System.ServiceProcess;
using System.Threading;
using Interfaces;
using Microsoft.Owin.Hosting;
namespace WindowsDataCenter
@ -16,6 +17,8 @@ namespace WindowsDataCenter
private IDisposable _webApp;
private bool _stopMainWorkerThread;
private Thread _mainWorkerThread;
private ILogger _logger;
private ConfigMonitor.ConfigMonitor _cfgWatcher;
public void Start()
{
@ -29,9 +32,14 @@ namespace WindowsDataCenter
protected override void OnStart(string[] args)
{
var configPath = string.Concat(System.Reflection.Assembly.GetEntryAssembly().Location, ".config");
//Initialise the Ninject system.
var ninjectInstance = NinjectHelper.GetInstance();
_logger = NinjectHelper.GetInstance().Get<ILogger>();
_logger.Trace("Starting Data Center Service");
_cfgWatcher = new ConfigMonitor.ConfigMonitor(configPath);
_logger.Trace("Monitoring App.config for changes");
_mainWorkerThread = new Thread(MainWorkerThread)
{
IsBackground = false,
@ -44,14 +52,20 @@ namespace WindowsDataCenter
}
catch (Exception ex)
{
Debug.WriteLine(ex);
throw;
_logger.Fatal(ex);
}
}
protected override void OnStop()
{
_logger.Trace("Stopping Data Center Service");
_webApp.Dispose();
_logger.Trace("Stopped WebApi");
_cfgWatcher.Stop();
_logger.Trace("Stopped Config Watcher");
_stopMainWorkerThread = true;
if (_mainWorkerThread != null && _mainWorkerThread.IsAlive)
{
@ -61,6 +75,7 @@ namespace WindowsDataCenter
_mainWorkerThread.Interrupt();
}
}
_logger.Trace("Exiting..");
}
private void MainWorkerThread()