82 lines
1.7 KiB
C#
82 lines
1.7 KiB
C#
|
|
|
||
|
|
|
||
|
|
|
||
|
|
namespace Guru
|
||
|
|
{
|
||
|
|
using System;
|
||
|
|
using System.Collections;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
|
||
|
|
|
||
|
|
public class ThreadHandler: IUpdater
|
||
|
|
{
|
||
|
|
private Queue<Action> _actions;
|
||
|
|
public Queue<Action> Actions
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
if(_actions == null)
|
||
|
|
_actions = new Queue<Action>(10);
|
||
|
|
return _actions;
|
||
|
|
}
|
||
|
|
|
||
|
|
set
|
||
|
|
{
|
||
|
|
if (value != null) _actions = value;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private UpdaterState _state;
|
||
|
|
public UpdaterState State => _state;
|
||
|
|
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 启动 Updater
|
||
|
|
/// </summary>
|
||
|
|
public void Start()
|
||
|
|
{
|
||
|
|
_state = UpdaterState.Running;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 执行方案
|
||
|
|
/// </summary>
|
||
|
|
public void OnUpdate()
|
||
|
|
{
|
||
|
|
if (Actions.Count > 0)
|
||
|
|
{
|
||
|
|
// 消耗对垒
|
||
|
|
while (Actions.Count > 0)
|
||
|
|
{
|
||
|
|
Actions.Dequeue()?.Invoke();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Pause(bool pause = true)
|
||
|
|
{
|
||
|
|
_state = pause ? UpdaterState.Pause : UpdaterState.Running;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 删除对象
|
||
|
|
/// </summary>
|
||
|
|
public void Kill()
|
||
|
|
{
|
||
|
|
_state = UpdaterState.Kill;
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Dispose()
|
||
|
|
{
|
||
|
|
_actions.Clear();
|
||
|
|
_state = UpdaterState.Kill;
|
||
|
|
}
|
||
|
|
|
||
|
|
public void AddAction(Action action)
|
||
|
|
{
|
||
|
|
if (action == null) return;
|
||
|
|
Actions.Enqueue(action);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|