diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index 057c4f0328fce..0e9917f1f8313 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -159,6 +159,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { private _latestXtermWriteData: number = 0; private _latestXtermParseData: number = 0; private _isExiting: boolean; + private _isDisposing: boolean; private _hadFocusOnExit: boolean; private _exitCode: number | undefined; private _exitReason: TerminalExitReason | undefined; @@ -413,6 +414,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { this._widgetManager = this._register(instantiationService.createInstance(TerminalWidgetManager)); this._isExiting = false; + this._isDisposing = false; this._hadFocusOnExit = false; this._isVisible = false; this._instanceId = TerminalInstance._instanceIdCounter++; @@ -1292,6 +1294,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { return; } this._logService.trace(`terminalInstance#dispose (instanceId: ${this.instanceId})`); + this._isDisposing = true; dispose(this._widgetManager); if (this.xterm?.raw.element) { @@ -2019,7 +2022,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { } private async _resize(immediate?: boolean): Promise { - if (!this.xterm) { + if (!this.xterm || this.isDisposed || this._isDisposing) { return; }