using System; using System.IO; using System.Linq; using System.Reflection; using Dapper; using DataModel; using Topshelf; using WorkerService.Process; namespace WorkerService { class Program { static void Main(string[] args) { string cs = Config.LotFinderDBCS; //Load app domain assemblies var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => !a.IsDynamic).ToList(); var loadedPaths = loadedAssemblies.Select(a => a.Location).ToArray(); var referencedPaths = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll"); var toLoad = referencedPaths.Where(r => !loadedPaths.Contains(r, StringComparer.InvariantCultureIgnoreCase)).ToList(); toLoad.ForEach(path => loadedAssemblies.Add(AppDomain.CurrentDomain.Load(AssemblyName.GetAssemblyName(path)))); //Override defaults SqlMapper.Settings.CommandTimeout = 1200 * 50; Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); Host host = HostFactory.New(x => { x.UseNLog(); x.StartAutomatically(); x.EnableServiceRecovery(rc => { rc.RestartService(1); }); x.EnableShutdown(); x.Service(s => { s.ConstructUsing(name => new WorkProcessor()); s.WhenStarted(tc => tc.Start()); s.WhenStopped(tc => tc.Stop()); }); x.RunAsLocalSystem(); x.SetDescription("JDE scoping search processor"); x.SetDisplayName("JDE_SearchProcessor"); x.SetServiceName("JDE_SearchProcessor"); }); host.Run(); } } }