public DateTimeProvider(IEntityLogger logger, IActivePeriodicObjectCommonContext syncContext) : base(logger) { var activeContext = new ActivePeriodicObjectContext(syncContext); _activeObject = new AsyncActivePeriodicObject(activeContext) { PeriodicMethod = NRun }; }
public VisionComponent(IEntityLogger logger, IVisionProvider visionProvider, HumanoidNPCGameComponentContext internalContext, IWorldCoreGameComponentContext worldContext) : base(logger) { _internalContext = internalContext; _selfInstanceId = internalContext.SelfInstanceId; _worldContext = worldContext; _visionProvider = visionProvider; _activePeriodicObjectContext = new ActivePeriodicObjectContext(worldContext.SyncContext); _activeObject = new AsyncActivePeriodicObject(_activePeriodicObjectContext); _activeObject.PeriodicMethod = CommandLoop; }
public void Run() { _logger.Log("Begin"); var commonActiveContext = new ActivePeriodicObjectCommonContext(); var activeContext = new ActivePeriodicObjectContext(commonActiveContext); var activeObject = new AsyncActivePeriodicObject(activeContext) { PeriodicMethod = NRun }; var activeObject2 = new AsyncActivePeriodicObject(activeContext) { PeriodicMethod = NRun_2 }; _logger.Log($"activeObject.IsWaited (0) = {activeObject.IsWaited}"); _logger.Log($"activeObject.IsActive (0) = {activeObject.IsActive}"); var taskValue = activeObject.Start(); _logger.Log($"taskValue = {taskValue}"); activeObject2.Start(); Thread.Sleep(10000); _logger.Log($"activeObject.IsWaited = {activeObject.IsWaited}"); _logger.Log($"activeObject.IsActive = {activeObject.IsActive}"); commonActiveContext.Lock(); activeContext.WaitWhenAllIsNotWaited(); Thread.Sleep(1000); _logger.Log($"activeObject.IsWaited (2) = {activeObject.IsWaited}"); _logger.Log($"activeObject.IsActive (2) = {activeObject.IsActive}"); Thread.Sleep(1000); commonActiveContext.UnLock(); Thread.Sleep(1000); _logger.Log($"activeObject.IsWaited (3) = {activeObject.IsWaited}"); _logger.Log($"activeObject.IsActive (3) = {activeObject.IsActive}"); //Thread.Sleep(1000); //activeObject.Stop(); //_logger.Log($"activeObject.IsWaited (4) = {activeObject.IsWaited}"); //_logger.Log($"activeObject.IsActive (4) = {activeObject.IsActive}"); //Thread.Sleep(10000); //taskValue = activeObject.Start(); //_logger.Log($"taskValue = {taskValue}"); //Thread.Sleep(1000); //activeObject.Stop(); //Thread.Sleep(1000); //_logger.Log($"activeObject.TaskValue = {activeObject.TaskValue}"); //activeObject.Dispose(); //Thread.Sleep(1000); //taskValue = activeObject.Start(); //_logger.Log($"taskValue = {taskValue}"); Thread.Sleep(1000); _logger.Log("End"); }