@@ -373,12 +373,20 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
373
373
this . _tasksReconnected = true ;
374
374
return ;
375
375
}
376
- this . _getTaskSystem ( ) ;
377
376
this . getWorkspaceTasks ( ) . then ( async ( ) => {
378
377
this . _tasksReconnected = await this . _reconnectTasks ( ) ;
379
378
} ) ;
380
379
}
381
380
381
+ private async _waitForTaskSystem ( ) : Promise < void > {
382
+ if ( this . hasTaskSystemInfo ) {
383
+ return ;
384
+ }
385
+ // Wait until we have task system info (the extension host and workspace folders are available).
386
+ this . _logService . trace ( 'RunBuildTask: Awaiting task system info.' ) ;
387
+ await Event . toPromise ( Event . once ( this . onDidChangeTaskSystemInfo ) ) ;
388
+ }
389
+
382
390
private async _reconnectTasks ( ) : Promise < boolean > {
383
391
const tasks = await this . getSavedTasks ( 'persistent' ) ;
384
392
if ( ! tasks . length ) {
@@ -2199,6 +2207,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
2199
2207
if ( ! ( await this . _trust ( ) ) ) {
2200
2208
return new Map ( ) ;
2201
2209
}
2210
+ await this . _waitForTaskSystem ( ) ;
2202
2211
await this . _waitForSupportedExecutions ;
2203
2212
// The build task might be run before folder open. On folder open, we need to update the tasks so that
2204
2213
// all tasks are parsed. #173384
@@ -2750,6 +2759,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
2750
2759
}
2751
2760
2752
2761
private async _runTaskCommand ( filter ?: string | ITaskIdentifier ) : Promise < void > {
2762
+ await this . _waitForTaskSystem ( ) ;
2753
2763
if ( ! filter ) {
2754
2764
return this . _doRunTaskCommand ( ) ;
2755
2765
}
@@ -2907,6 +2917,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
2907
2917
title : strings . fetching
2908
2918
} ;
2909
2919
const promise = ( async ( ) => {
2920
+ await this . _waitForTaskSystem ( ) ;
2910
2921
let taskGroupTasks : ( Task | ConfiguringTask ) [ ] = [ ] ;
2911
2922
2912
2923
async function runSingleTask ( task : Task | undefined , problemMatcherOptions : IProblemMatcherRunOptions | undefined , that : AbstractTaskService ) {
0 commit comments