diff --git a/NTDLS.Katzebase.Server/Program.cs b/NTDLS.Katzebase.Server/Program.cs index fa430892..e755e88f 100644 --- a/NTDLS.Katzebase.Server/Program.cs +++ b/NTDLS.Katzebase.Server/Program.cs @@ -1,5 +1,6 @@ using NTDLS.Katzebase.Server; using Topshelf; +using Topshelf.ServiceConfigurators; namespace NTDLS.Katzebase.Server { @@ -10,7 +11,7 @@ public class KatzebaseService private SemaphoreSlim _semaphoreToRequestStop; private Thread _thread; - public KatzebaseService() + public KatzebaseService(ServiceConfigurator< KatzebaseService> s ) { _semaphoreToRequestStop = new SemaphoreSlim(0); _thread = new Thread(DoWork); @@ -29,20 +30,27 @@ public void Stop() private void DoWork() { - var apiService = new APIService(); + try + { + var apiService = new APIService(); - apiService.Start(); + apiService.Start(); - while (true) - { - if (_semaphoreToRequestStop.Wait(500)) + while (true) { - apiService.Stop(); - break; + if (_semaphoreToRequestStop.Wait(500)) + { + apiService.Stop(); + break; + } } } + catch (Exception ex) + { + Console.WriteLine($"An error occured while starting or the service: {ex.Message}"); + return; + } } - } public static void Main() @@ -58,7 +66,7 @@ public static void Main() x.Service(s => { - s.ConstructUsing(hostSettings => new KatzebaseService()); + s.ConstructUsing(hostSettings => new KatzebaseService(s)); s.WhenStarted(tc => tc.Start()); s.WhenStopped(tc => tc.Stop()); });