diff --git a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts index fd5cd393fc6..9597fd9689f 100644 --- a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts +++ b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts @@ -2756,8 +2756,16 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer return true; } + private async _ensureWorkspaceTasks(): Promise { + if (!this._workspaceTasksPromise) { + await this.getWorkspaceTasks(); + } else { + await this._workspaceTasksPromise; + } + } + private async _runTaskCommand(filter?: string | ITaskIdentifier): Promise { - await this._waitForTaskSystem(); + await this._ensureWorkspaceTasks(); if (!filter) { return this._doRunTaskCommand(); } @@ -2915,7 +2923,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer title: strings.fetching }; const promise = (async () => { - await this._waitForTaskSystem(); + await this._ensureWorkspaceTasks(); let taskGroupTasks: (Task | ConfiguringTask)[] = []; async function runSingleTask(task: Task | undefined, problemMatcherOptions: IProblemMatcherRunOptions | undefined, that: AbstractTaskService) {