private void TaskThread() { var task = CurrentTask; if (task == null) { throw new Exception(); } try { task.Run(); } catch (Exception e) { CurrentTask = null; Debug.LogException(e); return; } CurrentTask = null; if (task.Join) { var joinData = task.GetJoinData(); PendingJoinTasks.Add(joinData); } else { task.CallCallback(); } }
private void ProcessPendingJoins() { foreach (var task in PendingJoinTasks.ToArray()) { PendingJoinTasks.Remove(task); task.Call(); } }