Пример #1
0
        /// <summary>
        /// 监视主节点是否存活
        /// 主节点退出  从节点全部结束进程。进程监视 broker
        /// </summary>
        public static void MonitorIsMasterCenterAlive()
        {
            //RunningLocker.CreateNewLock().CancelAfter(1000);
            lock (_locker)
            {
                if (_isInit == true)
                {
                    return;
                }

                _timer_supervisor_main.Elapsed += (s, e) =>
                {
                    try
                    {
                        var mainProcess = System.Diagnostics.Process.GetProcessById(GlobalContext.MainProcessId);
                        if (mainProcess == null)
                        {
                            //主进程都已经退出,那么残留的进程都没有意义
                            AppBroker.TerminalApplicationProcess();
                        }
                    }
                    catch (Exception ex)
                    {
                        AppBroker.TerminalApplicationProcess();

                        Common.Logging.Logger.Error(ex);
                    }
                };
                _timer_supervisor_main.Start();


                _isInit = true;
            }
        }