Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 675714a

Browse files
Preventing queue execution if no items are added
1 parent 6e0d0bc commit 675714a

File tree

1 file changed

+37
-10
lines changed

1 file changed

+37
-10
lines changed

src/GitHub.Api/Tasks/ActionTask.cs

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,30 @@ public ITask Queue(ITask task)
3131

3232
public override void RunSynchronously()
3333
{
34-
foreach (var task in queuedTasks)
35-
task.Start();
36-
base.RunSynchronously();
34+
if (queuedTasks.Any())
35+
{
36+
foreach (var task in queuedTasks)
37+
task.Start();
38+
base.RunSynchronously();
39+
}
40+
else
41+
{
42+
aggregateTask.TrySetResult(true);
43+
}
3744
}
3845

3946
protected override void Schedule()
4047
{
41-
foreach (var task in queuedTasks)
42-
task.Start();
43-
base.Schedule();
48+
if (queuedTasks.Any())
49+
{
50+
foreach (var task in queuedTasks)
51+
task.Start();
52+
base.Schedule();
53+
}
54+
else
55+
{
56+
aggregateTask.TrySetResult(true);
57+
}
4458
}
4559

4660
private void InvokeFinishOnlyOnSuccess(ITask task, bool success, Exception ex)
@@ -115,16 +129,29 @@ public ITask<TTaskResult> Queue(ITask<TTaskResult> task)
115129

116130
public override List<TResult> RunSynchronously()
117131
{
118-
foreach (var task in queuedTasks)
132+
if (queuedTasks.Any())
133+
{
134+
foreach (var task in queuedTasks)
119135
task.Start();
120-
return base.RunSynchronously();
136+
return base.RunSynchronously();
137+
}
138+
139+
aggregateTask.TrySetResult(new List<TResult>());
140+
return Result;
121141
}
122142

123143
protected override void Schedule()
124144
{
125-
foreach (var task in queuedTasks)
145+
if (queuedTasks.Any())
146+
{
147+
foreach (var task in queuedTasks)
126148
task.Start();
127-
base.Schedule();
149+
base.Schedule();
150+
}
151+
else
152+
{
153+
aggregateTask.TrySetResult(new List<TResult>());
154+
}
128155
}
129156

130157
private void InvokeFinishOnlyOnSuccess(ITask<TTaskResult> task, TTaskResult result, bool success, Exception ex)

0 commit comments

Comments
 (0)