-
Notifications
You must be signed in to change notification settings - Fork 38.2k
Closed
Description
Problem
Our code commonly uses IDisposable[] to track multiple disposables. This is not safe and may leak disposables. Consider:
const disposables: IDisposable[] = [];
disposables.push(new DisposableThing());
dispose(disposables);
disposables.push(new DisposableThing2());This results in DisposableThing2 being leaked. This sequence of calls can easily happen in async code or in complex sync code
Proposed Fix
Review places where we use IDisposable[]. In almost all cases, we should either:
-
For classes, extend
Disposableinstead of creating adisposablesprivate property. TheDisposableclass correctly handles the above case. -
In place of a
IDisposable[], useDisposableStorewhich was added by Add DisposableStore for use in VS Code #74242 for this very reason.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
debtCode quality issuesCode quality issues