diff --git a/src/GitHub.Api/Tasks/ActionTask.cs b/src/GitHub.Api/Tasks/ActionTask.cs index 344704561..73692baea 100644 --- a/src/GitHub.Api/Tasks/ActionTask.cs +++ b/src/GitHub.Api/Tasks/ActionTask.cs @@ -31,15 +31,31 @@ public ITask Queue(ITask task) public override void RunSynchronously() { - foreach (var task in queuedTasks) - task.Start(); + if (queuedTasks.Any()) + { + foreach (var task in queuedTasks) + task.Start(); + } + else + { + aggregateTask.TrySetResult(true); + } + base.RunSynchronously(); } protected override void Schedule() { - foreach (var task in queuedTasks) - task.Start(); + if (queuedTasks.Any()) + { + foreach (var task in queuedTasks) + task.Start(); + } + else + { + aggregateTask.TrySetResult(true); + } + base.Schedule(); } @@ -115,15 +131,31 @@ public ITask Queue(ITask task) public override List RunSynchronously() { - foreach (var task in queuedTasks) - task.Start(); + if (queuedTasks.Any()) + { + foreach (var task in queuedTasks) + task.Start(); + } + else + { + aggregateTask.TrySetResult(new List()); + } + return base.RunSynchronously(); } protected override void Schedule() { - foreach (var task in queuedTasks) - task.Start(); + if (queuedTasks.Any()) + { + foreach (var task in queuedTasks) + task.Start(); + } + else + { + aggregateTask.TrySetResult(new List()); + } + base.Schedule(); }