void AdvanceFrameAll()
{
var currentNode = _workers.First;
while (currentNode != null)
{
var next = currentNode.Next;
var worker = currentNode.Value;
try
{
worker.CoRoutine.Pump();
worker.IsFinished = worker.CoRoutine.IsDone;
}
catch (Exception e)
{
worker.IsFinished = true;
Debug.LogException(e);
}
if (worker.IsFinished)
{
_workers.Remove(currentNode);
}
currentNode = next;
}
}