Await process exit from remote on terminal kill/kill all commands

Part of #138049
This commit is contained in:
Daniel Imms 2021-12-08 05:56:31 -08:00
parent fcf55dce4a
commit 3ea9cd4bda
2 changed files with 10 additions and 3 deletions

View file

@ -1804,9 +1804,11 @@ export function registerTerminalActions() {
}
async run(accessor: ServicesAccessor) {
const terminalService = accessor.get(ITerminalService);
const disposePromises: Promise<void>[] = [];
for (const instance of terminalService.instances) {
await terminalService.safeDisposeTerminal(instance);
disposePromises.push(terminalService.safeDisposeTerminal(instance));
}
await Promise.all(disposePromises);
}
});
registerAction2(class extends Action2 {
@ -1856,9 +1858,11 @@ export function registerTerminalActions() {
return;
}
const terminalService = accessor.get(ITerminalService);
const disposePromises: Promise<void>[] = [];
for (const instance of selectedInstances) {
terminalService.safeDisposeTerminal(instance);
disposePromises.push(terminalService.safeDisposeTerminal(instance));
}
await Promise.all(disposePromises);
if (terminalService.instances.length > 0) {
accessor.get(ITerminalGroupService).focusTabs();
focusNext(accessor);

View file

@ -342,7 +342,10 @@ export class TerminalService implements ITerminalService {
return;
}
}
instance.dispose();
return new Promise<void>(r => {
instance.onExit(() => r());
instance.dispose();
});
}
private _setConnected() {