private static void CurrentDomain_DomainUnload(object sender, EventArgs e) { if (NodeStarter != null) { NodeStarter.Stop(); } QuitEvent.Set(); }
private static bool ConsoleCtrlCheck(CtrlTypes ctrlType) { if (ctrlType == CtrlTypes.CtrlCloseEvent || ctrlType == CtrlTypes.CtrlShutdownEvent) { NodeStarter.Stop(); QuitEvent.Set(); return(true); } return(false); }
public static void Main() { var configurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; XmlConfigurator.ConfigureAndWatch(new FileInfo(configurationFile)); SetConsoleCtrlHandler(ConsoleCtrlCheck, true); AppDomain.CurrentDomain.DomainUnload += CurrentDomain_DomainUnload; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; var enableGc = bool.Parse(ConfigurationManager.AppSettings["EnableGc"]); var nodeConfig = new NodeConfiguration( new Uri(ConfigurationManager.AppSettings["ManagerLocation"]), Assembly.Load(ConfigurationManager.AppSettings["HandlerAssembly"]), int.Parse(ConfigurationManager.AppSettings["Port"]), ConfigurationManager.AppSettings["NodeName"], int.Parse(ConfigurationManager.AppSettings["PingToManagerSeconds"]), int.Parse(ConfigurationManager.AppSettings["SendJobDetailToManagerMilliSeconds"]), enableGc ); WhoAmI = "[NODE CONSOLE HOST ( " + nodeConfig.NodeName + ", " + nodeConfig.BaseAddress + " ), " + Environment.MachineName.ToUpper() + "]"; Logger.InfoWithLineNumber(WhoAmI + " : started."); var builder = new ContainerBuilder(); builder.RegisterModule(new WorkerModule()); Container = builder.Build(); NodeStarter = new NodeStarter(); NodeStarter.Start(nodeConfig, Container); QuitEvent.WaitOne(); }