Create base class for disposable objects

This commit is contained in:
Matt Bierner
2019-02-05 17:08:57 -08:00
parent 68df4365ce
commit 8f10101dd4
3 changed files with 48 additions and 38 deletions

View File

@@ -14,3 +14,29 @@ export function disposeAll(disposables: vscode.Disposable[]) {
}
}
export abstract class Disposable {
private _isDisposed = false;
protected _disposables: vscode.Disposable[] = [];
public dispose(): any {
if (this._isDisposed) {
return;
}
this._isDisposed = true;
disposeAll(this._disposables);
}
protected _register<T extends vscode.Disposable>(value: T): T {
if (this._isDisposed) {
value.dispose();
} else {
this._disposables.push(value);
}
return value;
}
protected get isDisposed() {
return this._isDisposed;
}
}