private void OnTaskComplete(UpdaterContext context, ITask task) { var poppedTask = TaskStack.Dequeue(); TaskComplete(context, task); LaunchNextTask(context); }
private void OnTaskFailed(UpdaterContext context, ITask updateTask, Exception exception) { var poppedTask = TaskStack.Dequeue(); TaskFailed(context, updateTask, exception); if (updateTask.StopOnFail) { TaskStack.Clear(); } LaunchNextTask(context); }
protected internal void LaunchNextTask(UpdaterContext context) { if (TaskStack.Count == 0) { new Action(() => OnTaskRunnerComplete(context)).BeginInvoke(null, null); return; } var thisTask = TaskStack.Peek(); try { thisTask.ExecuteTask(context); } catch (Exception e) { context.FireTaskFailed(thisTask, e); return; } context.FireTaskComplete(thisTask); }
protected internal void AddTask(ITask task) { TaskStack.Enqueue(task); }