提交功能
This commit is contained in:
54
Core/TaskRunner.cs
Normal file
54
Core/TaskRunner.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using NBC;
|
||||
|
||||
namespace ACBuildService;
|
||||
|
||||
/// <summary>
|
||||
/// 默认任务执行器
|
||||
/// </summary>
|
||||
public class TaskRunner : Runner
|
||||
{
|
||||
private static TaskRunner mUpdateRunner;
|
||||
public static TaskRunner Scheduler => mUpdateRunner ??= new TaskRunner();
|
||||
|
||||
private readonly List<IProcess> _updateRoutines = new List<IProcess>();
|
||||
|
||||
public event Action OnUpdate;
|
||||
|
||||
public TaskRunner()
|
||||
{
|
||||
Time.OnUpdate += Update;
|
||||
StartCoroutine(new RunnerProcess("TaskRunner", Coroutines, ReadyTask, FlushingOperation));
|
||||
}
|
||||
|
||||
private void StartCoroutine(IProcess process)
|
||||
{
|
||||
var routines = _updateRoutines;
|
||||
if (!routines.Contains(process))
|
||||
{
|
||||
routines.Add(process);
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
ExecuteRoutines(_updateRoutines);
|
||||
OnUpdate?.Invoke();
|
||||
}
|
||||
|
||||
private void ExecuteRoutines(List<IProcess> arr)
|
||||
{
|
||||
if (arr != null && arr.Count > 0)
|
||||
{
|
||||
for (var index = 0; index < arr.Count; index++)
|
||||
{
|
||||
var task = arr[index];
|
||||
var st = task.Process();
|
||||
if (st == NTaskStatus.Success)
|
||||
{
|
||||
arr.RemoveAt(index);
|
||||
index--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user