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 { diff --git a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts index 5605c99c5d8..5a001e31595 100644 --- a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts +++ b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts @@ -337,9 +337,9 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer } return task._label; }); - this._lifecycleService.onBeforeShutdown(e => { + this._register(this._lifecycleService.onBeforeShutdown(e => { this._willRestart = e.reason !== ShutdownReason.RELOAD; - }); + })); this._register(this.onDidStateChange(e => { this._log(nls.localize('taskEvent', 'Task Event kind: {0}', e.kind), true); if (e.kind === TaskEventKind.Changed) { diff --git a/src/vs/workbench/contrib/tasks/browser/task.contribution.ts b/src/vs/workbench/contrib/tasks/browser/task.contribution.ts index a0d2bb523f6..08e8292b60c 100644 --- a/src/vs/workbench/contrib/tasks/browser/task.contribution.ts +++ b/src/vs/workbench/contrib/tasks/browser/task.contribution.ts @@ -70,7 +70,7 @@ export class TaskStatusBarContributions extends Disposable implements IWorkbench private _registerListeners(): void { let promise: Promise | undefined = undefined; let resolve: (value?: void | Thenable) => void; - this._taskService.onDidStateChange(event => { + this._register(this._taskService.onDidStateChange(event => { if (event.kind === TaskEventKind.Changed) { this._updateRunningTasksStatus(); } @@ -116,7 +116,7 @@ export class TaskStatusBarContributions extends Disposable implements IWorkbench promise = undefined; }); } - }); + })); } private async _updateRunningTasksStatus(): Promise { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts b/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts index 8cd412341c5..18dc14fe936 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts @@ -107,7 +107,7 @@ export class TerminalTabbedView extends Disposable { this._tabTreeIndex = this._terminalService.configHelper.config.tabs.location === 'left' ? 0 : 1; this._terminalContainerIndex = this._terminalService.configHelper.config.tabs.location === 'left' ? 1 : 0; - _configurationService.onDidChangeConfiguration(e => { + this._register(_configurationService.onDidChangeConfiguration(e => { if (e.affectsConfiguration(TerminalSettingId.TabsEnabled) || e.affectsConfiguration(TerminalSettingId.TabsHideCondition)) { this._refreshShowTabs(); @@ -121,20 +121,20 @@ export class TerminalTabbedView extends Disposable { this._splitView.resizeView(this._tabTreeIndex, this._getLastListWidth()); } } - }); + })); this._register(this._terminalGroupService.onDidChangeInstances(() => this._refreshShowTabs())); this._register(this._terminalGroupService.onDidChangeGroups(() => this._refreshShowTabs())); this._attachEventListeners(parentElement, this._terminalContainer); - this._terminalGroupService.onDidChangePanelOrientation((orientation) => { + this._register(this._terminalGroupService.onDidChangePanelOrientation((orientation) => { this._panelOrientation = orientation; if (this._panelOrientation === Orientation.VERTICAL) { this._terminalContainer.classList.add(CssClass.ViewIsVertical); } else { this._terminalContainer.classList.remove(CssClass.ViewIsVertical); } - }); + })); this._splitView = new SplitView(parentElement, { orientation: Orientation.HORIZONTAL, proportionalLayout: false }); this._setupSplitView(terminalOuterContainer);