File tree Expand file tree Collapse file tree 1 file changed +21
-1
lines changed
Expand file tree Collapse file tree 1 file changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -34,6 +34,26 @@ private Task Start(Func<Task> request)
3434 return t ;
3535 }
3636
37+ private List < Task > RemoveCompleteTasks ( List < Task > list )
38+ {
39+ if ( list . Count == 0 ) return list ;
40+
41+ var result = new List < Task > ( ) ;
42+ foreach ( var t in list )
43+ {
44+ if ( t . IsFaulted )
45+ {
46+ // TODO: Handle Fault
47+ }
48+ else if ( ! t . IsCompleted )
49+ {
50+ result . Add ( t ) ;
51+ }
52+ }
53+ return result ;
54+ }
55+
56+
3757 private void ProcessRequestQueue ( )
3858 {
3959 // see https://github.com/OmniSharp/csharp-language-server-protocol/issues/4
@@ -49,7 +69,6 @@ private void ProcessRequestQueue()
4969 if ( type == RequestProcessType . Serial )
5070 {
5171 Task . WaitAll ( waitables . ToArray ( ) , token ) ;
52- waitables . Clear ( ) ;
5372 Start ( request ) . Wait ( token ) ;
5473 }
5574 else if ( type == RequestProcessType . Parallel )
@@ -58,6 +77,7 @@ private void ProcessRequestQueue()
5877 }
5978 else
6079 throw new NotImplementedException ( "Only Serial and Parallel execution types can be handled currently" ) ;
80+ waitables = RemoveCompleteTasks ( waitables ) ;
6181 }
6282 }
6383 }
You can’t perform that action at this time.
0 commit comments