From 681256b081770347e25528e7225d9dfa0363a665 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 28 Mar 2024 09:30:03 -0700 Subject: [PATCH] fix #207448 --- src/vs/workbench/api/browser/mainThreadTask.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/api/browser/mainThreadTask.ts b/src/vs/workbench/api/browser/mainThreadTask.ts index 8fe9a431321..9c37c597978 100644 --- a/src/vs/workbench/api/browser/mainThreadTask.ts +++ b/src/vs/workbench/api/browser/mainThreadTask.ts @@ -10,7 +10,7 @@ import { generateUuid } from 'vs/base/common/uuid'; import * as Types from 'vs/base/common/types'; import * as Platform from 'vs/base/common/platform'; import { IStringDictionary } from 'vs/base/common/collections'; -import { IDisposable } from 'vs/base/common/lifecycle'; +import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; import { IWorkspace, IWorkspaceContextService, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; @@ -414,7 +414,7 @@ namespace TaskFilterDTO { } @extHostNamedCustomer(MainContext.MainThreadTask) -export class MainThreadTask implements MainThreadTaskShape { +export class MainThreadTask extends Disposable implements MainThreadTaskShape { private readonly _extHostContext: IExtHostContext | undefined; private readonly _proxy: ExtHostTaskShape; @@ -426,9 +426,10 @@ export class MainThreadTask implements MainThreadTaskShape { @IWorkspaceContextService private readonly _workspaceContextServer: IWorkspaceContextService, @IConfigurationResolverService private readonly _configurationResolverService: IConfigurationResolverService ) { + super(); this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostTask); this._providers = new Map(); - this._taskService.onDidStateChange(async (event: ITaskEvent) => { + this._register(this._taskService.onDidStateChange(async (event: ITaskEvent) => { if (event.kind === TaskEventKind.Changed) { return; } @@ -453,14 +454,15 @@ export class MainThreadTask implements MainThreadTaskShape { } else if (event.kind === TaskEventKind.End) { this._proxy.$OnDidEndTask(TaskExecutionDTO.from(task.getTaskExecution())); } - }); + })); } - public dispose(): void { + public override dispose(): void { for (const value of this._providers.values()) { value.disposable.dispose(); } this._providers.clear(); + super.dispose(); } $createTaskId(taskDTO: ITaskDTO): Promise {