public override void doProcess(object obj) { if (System.Threading.Interlocked.Exchange(ref syncPoint, 1) == 0) { try { if (scApp.FailOverService.isActive()) { if (line.ServiceMode != SCAppConstants.AppServiceMode.Active) { line.ServiceMode = SCAppConstants.AppServiceMode.Active; //scApp.getBCFApplication().startTcpIpSecverListen(); // scApp.VehicleService.SubscriptionPositionChangeEvent(); if (scApp.LineBLL.isSegmentPreDisableExcuting()) { scApp.LineBLL.BegingOrEndSegmentPreDisableExcute(true); } scApp.getNatsManager().Unsubscriber(SCAppConstants.NATS_SUBJECT_LINE_INFO); logger.Info($"{ SCApplication.ServerName} become {line.ServiceMode}"); } } else { if (line.ServiceMode != SCAppConstants.AppServiceMode.Standby) { line.ServiceMode = SCAppConstants.AppServiceMode.Standby; //scApp.VehicleService.UnsubscribePositionChangeEvent(); //scApp.getBCFApplication().ShutdownTcpIpSecverListen(); logger.Info($"{ SCApplication.ServerName} become {line.ServiceMode}"); scApp.getNatsManager().Subscriber(SCAppConstants.NATS_SUBJECT_LINE_INFO, ProcLineInfo, is_last: true); line.ReStartStateMachine(); } } } catch (Exception ex) { logger.Error(ex, "Exception"); } finally { System.Threading.Interlocked.Exchange(ref syncPoint, 0); } } }