@@ -31,16 +31,30 @@ public ITask Queue(ITask task)
31
31
32
32
public override void RunSynchronously ( )
33
33
{
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
+ }
37
44
}
38
45
39
46
protected override void Schedule ( )
40
47
{
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
+ }
44
58
}
45
59
46
60
private void InvokeFinishOnlyOnSuccess ( ITask task , bool success , Exception ex )
@@ -115,16 +129,29 @@ public ITask<TTaskResult> Queue(ITask<TTaskResult> task)
115
129
116
130
public override List < TResult > RunSynchronously ( )
117
131
{
118
- foreach ( var task in queuedTasks )
132
+ if ( queuedTasks . Any ( ) )
133
+ {
134
+ foreach ( var task in queuedTasks )
119
135
task . Start ( ) ;
120
- return base . RunSynchronously ( ) ;
136
+ return base . RunSynchronously ( ) ;
137
+ }
138
+
139
+ aggregateTask . TrySetResult ( new List < TResult > ( ) ) ;
140
+ return Result ;
121
141
}
122
142
123
143
protected override void Schedule ( )
124
144
{
125
- foreach ( var task in queuedTasks )
145
+ if ( queuedTasks . Any ( ) )
146
+ {
147
+ foreach ( var task in queuedTasks )
126
148
task . Start ( ) ;
127
- base . Schedule ( ) ;
149
+ base . Schedule ( ) ;
150
+ }
151
+ else
152
+ {
153
+ aggregateTask . TrySetResult ( new List < TResult > ( ) ) ;
154
+ }
128
155
}
129
156
130
157
private void InvokeFinishOnlyOnSuccess ( ITask < TTaskResult > task , TTaskResult result , bool success , Exception ex )
0 commit comments