From 675714afdabd86a0ccbcf51837d36705ee9425c8 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Tue, 31 Jul 2018 14:46:08 -0400 Subject: [PATCH 1/2] Preventing queue execution if no items are added --- src/GitHub.Api/Tasks/ActionTask.cs | 47 +++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/src/GitHub.Api/Tasks/ActionTask.cs b/src/GitHub.Api/Tasks/ActionTask.cs index 344704561..e1c5db110 100644 --- a/src/GitHub.Api/Tasks/ActionTask.cs +++ b/src/GitHub.Api/Tasks/ActionTask.cs @@ -31,16 +31,30 @@ public ITask Queue(ITask task) public override void RunSynchronously() { - foreach (var task in queuedTasks) - task.Start(); - base.RunSynchronously(); + if (queuedTasks.Any()) + { + foreach (var task in queuedTasks) + task.Start(); + base.RunSynchronously(); + } + else + { + aggregateTask.TrySetResult(true); + } } protected override void Schedule() { - foreach (var task in queuedTasks) - task.Start(); - base.Schedule(); + if (queuedTasks.Any()) + { + foreach (var task in queuedTasks) + task.Start(); + base.Schedule(); + } + else + { + aggregateTask.TrySetResult(true); + } } private void InvokeFinishOnlyOnSuccess(ITask task, bool success, Exception ex) @@ -115,16 +129,29 @@ public ITask Queue(ITask task) public override List RunSynchronously() { - foreach (var task in queuedTasks) + if (queuedTasks.Any()) + { + foreach (var task in queuedTasks) task.Start(); - return base.RunSynchronously(); + return base.RunSynchronously(); + } + + aggregateTask.TrySetResult(new List()); + return Result; } protected override void Schedule() { - foreach (var task in queuedTasks) + if (queuedTasks.Any()) + { + foreach (var task in queuedTasks) task.Start(); - base.Schedule(); + base.Schedule(); + } + else + { + aggregateTask.TrySetResult(new List()); + } } private void InvokeFinishOnlyOnSuccess(ITask task, TTaskResult result, bool success, Exception ex) From 801d03307a583f7e8a99434775a4a5b68a4ebc03 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Wed, 1 Aug 2018 10:29:42 -0400 Subject: [PATCH 2/2] Making sure to call base methods appropriately --- src/GitHub.Api/Tasks/ActionTask.cs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/GitHub.Api/Tasks/ActionTask.cs b/src/GitHub.Api/Tasks/ActionTask.cs index e1c5db110..73692baea 100644 --- a/src/GitHub.Api/Tasks/ActionTask.cs +++ b/src/GitHub.Api/Tasks/ActionTask.cs @@ -35,12 +35,13 @@ public override void RunSynchronously() { foreach (var task in queuedTasks) task.Start(); - base.RunSynchronously(); } else { aggregateTask.TrySetResult(true); } + + base.RunSynchronously(); } protected override void Schedule() @@ -49,12 +50,13 @@ protected override void Schedule() { foreach (var task in queuedTasks) task.Start(); - base.Schedule(); } else { aggregateTask.TrySetResult(true); } + + base.Schedule(); } private void InvokeFinishOnlyOnSuccess(ITask task, bool success, Exception ex) @@ -132,12 +134,14 @@ public override List RunSynchronously() if (queuedTasks.Any()) { foreach (var task in queuedTasks) - task.Start(); - return base.RunSynchronously(); + task.Start(); + } + else + { + aggregateTask.TrySetResult(new List()); } - aggregateTask.TrySetResult(new List()); - return Result; + return base.RunSynchronously(); } protected override void Schedule() @@ -145,13 +149,14 @@ protected override void Schedule() if (queuedTasks.Any()) { foreach (var task in queuedTasks) - task.Start(); - base.Schedule(); + task.Start(); } else { aggregateTask.TrySetResult(new List()); } + + base.Schedule(); } private void InvokeFinishOnlyOnSuccess(ITask task, TTaskResult result, bool success, Exception ex)