@@ -1205,11 +1205,6 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
12051205 if ( ! task ) {
12061206 throw new TaskError ( Severity . Info , nls . localize ( 'TaskServer.noTask' , 'Task to execute is undefined' ) , TaskErrors . TaskNotFound ) ;
12071207 }
1208- if ( this . _inProgressTasks . has ( task . _label ) ) {
1209- this . _logService . info ( 'Prevented duplicate task from running' , task . _label ) ;
1210- return ;
1211- }
1212- this . _inProgressTasks . add ( task . _label ) ;
12131208 const resolver = this . _createResolver ( ) ;
12141209 let executeTaskResult : ITaskSummary | undefined ;
12151210 try {
@@ -1225,8 +1220,6 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
12251220 } catch ( error ) {
12261221 this . _handleError ( error ) ;
12271222 return Promise . reject ( error ) ;
1228- } finally {
1229- this . _inProgressTasks . delete ( task . _label ) ;
12301223 }
12311224 }
12321225
@@ -1837,7 +1830,12 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
18371830 }
18381831
18391832 private async _executeTask ( task : Task , resolver : ITaskResolver , runSource : TaskRunSource ) : Promise < ITaskSummary > {
1833+ if ( this . _inProgressTasks . has ( task . _label ) ) {
1834+ this . _logService . info ( 'Prevented duplicate task from running' , task . _label ) ;
1835+ return { exitCode : 0 } ;
1836+ }
18401837 let taskToRun : Task = task ;
1838+ this . _inProgressTasks . add ( task . _label ) ;
18411839 if ( await this . _saveBeforeRun ( ) ) {
18421840 await this . _configurationService . reloadConfiguration ( ) ;
18431841 await this . _updateWorkspaceTasks ( ) ;
@@ -1852,8 +1850,10 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
18521850 await ProblemMatcherRegistry . onReady ( ) ;
18531851 const executeResult = runSource === TaskRunSource . Reconnect ? this . _getTaskSystem ( ) . reconnect ( taskToRun , resolver ) : this . _getTaskSystem ( ) . run ( taskToRun , resolver ) ;
18541852 if ( executeResult ) {
1853+ this . _inProgressTasks . delete ( task . _label ) ;
18551854 return this . _handleExecuteResult ( executeResult , runSource ) ;
18561855 }
1856+ this . _inProgressTasks . delete ( task . _label ) ;
18571857 return { exitCode : 0 } ;
18581858 }
18591859
0 commit comments