コード例 #1
0
		public static void RemoveTask(HEU_Task task)
		{
			if(_tasks.Contains(task) && !_pendingRemove.Contains(task))
			{
				_pendingRemove.Add(task);
			}
		}
コード例 #2
0
		public static void ExecuteTask(HEU_Task task)
		{
			if (task._status == HEU_Task.TaskStatus.PENDING_START)
			{
				task._status = HEU_Task.TaskStatus.STARTED;
				task.DoTask();
			}
		}
コード例 #3
0
		public static void KillTask(System.Guid taskGuid, bool bRemove)
		{
			HEU_Task task = GetTask(taskGuid);
			if(task != null)
			{
				KillTask(task, bRemove);
			}
		}
コード例 #4
0
		public static void AddTask(HEU_Task task)
		{
			if (!_tasks.Contains(task) && !_pendingAdd.Contains(task))
			{
				task._status = HEU_Task.TaskStatus.PENDING_START;
				_pendingAdd.Add(task);
			}
		}
コード例 #5
0
		private static void InternalCompleteTask(HEU_Task task)
		{
			if (task._status == HEU_Task.TaskStatus.PENDING_COMPLETE)
			{
				task._status = HEU_Task.TaskStatus.COMPLETED;

				// Do callbacks
				task.CompleteTask(task._result);
				task._taskCompletedDelegate(task);
			}
		}
コード例 #6
0
		public static void CompleteTask(HEU_Task task, HEU_Task.TaskResult result)
		{
			if(task._status == HEU_Task.TaskStatus.STARTED)
			{
				// Marking this as pending complete allows to defer
				// the actual 'completion work' resulting in cleaner
				// task management, where tasks aren't adding and removing
				// in the same tick.
				task._status = HEU_Task.TaskStatus.PENDING_COMPLETE;
				task._result = result;
			}
		}
コード例 #7
0
		public static void KillTask(HEU_Task task, bool bRemove)
		{
			if(_tasks.Contains(task))
			{
				if(task._status == HEU_Task.TaskStatus.STARTED)
				{
					task.KillTask();
				}

				task._status = HEU_Task.TaskStatus.COMPLETED;
				task._result = HEU_Task.TaskResult.KILLED;
				
				// Note that the complete callback is not invoked if killed
				// because presumably it is most likely the invoker that killed it

				if (bRemove)
				{
					RemoveTask(task);
				}
			}
		}