@@ -1205,11 +1205,6 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
1205
1205
if ( ! task ) {
1206
1206
throw new TaskError ( Severity . Info , nls . localize ( 'TaskServer.noTask' , 'Task to execute is undefined' ) , TaskErrors . TaskNotFound ) ;
1207
1207
}
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 ) ;
1213
1208
const resolver = this . _createResolver ( ) ;
1214
1209
let executeTaskResult : ITaskSummary | undefined ;
1215
1210
try {
@@ -1225,8 +1220,6 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
1225
1220
} catch ( error ) {
1226
1221
this . _handleError ( error ) ;
1227
1222
return Promise . reject ( error ) ;
1228
- } finally {
1229
- this . _inProgressTasks . delete ( task . _label ) ;
1230
1223
}
1231
1224
}
1232
1225
@@ -1837,7 +1830,12 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
1837
1830
}
1838
1831
1839
1832
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
+ }
1840
1837
let taskToRun : Task = task ;
1838
+ this . _inProgressTasks . add ( task . _label ) ;
1841
1839
if ( await this . _saveBeforeRun ( ) ) {
1842
1840
await this . _configurationService . reloadConfiguration ( ) ;
1843
1841
await this . _updateWorkspaceTasks ( ) ;
@@ -1852,8 +1850,10 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
1852
1850
await ProblemMatcherRegistry . onReady ( ) ;
1853
1851
const executeResult = runSource === TaskRunSource . Reconnect ? this . _getTaskSystem ( ) . reconnect ( taskToRun , resolver ) : this . _getTaskSystem ( ) . run ( taskToRun , resolver ) ;
1854
1852
if ( executeResult ) {
1853
+ this . _inProgressTasks . delete ( task . _label ) ;
1855
1854
return this . _handleExecuteResult ( executeResult , runSource ) ;
1856
1855
}
1856
+ this . _inProgressTasks . delete ( task . _label ) ;
1857
1857
return { exitCode : 0 } ;
1858
1858
}
1859
1859
0 commit comments