提交 e130c604 编写于 作者: D Daniel Imms

Properly dispose of WindowsShellHelper

Fixes #33536
上级 d6ae2b85
......@@ -3,7 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as cp from 'child_process';
import * as platform from 'vs/base/common/platform';
import { TPromise } from 'vs/base/common/winjs.base';
import { Emitter, debounceEvent } from 'vs/base/common/event';
......@@ -17,7 +16,6 @@ let windowsProcessTree;
export class WindowsShellHelper {
private _childProcessIdStack: number[];
private _onCheckShell: Emitter<TPromise<string>>;
private _wmicProcess: cp.ChildProcess;
private _isDisposed: boolean;
public constructor(
......@@ -60,6 +58,9 @@ export class WindowsShellHelper {
}
private traverseTree(tree: any): string {
if (!tree) {
return '';
}
if (SHELL_EXECUTABLES.indexOf(tree.name) === -1) {
return tree.name;
}
......@@ -84,15 +85,15 @@ export class WindowsShellHelper {
public dispose(): void {
this._isDisposed = true;
if (this._wmicProcess) {
this._wmicProcess.kill();
}
}
/**
* Returns the innermost shell executable running in the terminal
*/
public getShellName(): TPromise<string> {
if (this._isDisposed) {
return TPromise.as('');
}
return new TPromise<string>(resolve => {
windowsProcessTree(this._rootProcessId, (tree) => {
resolve(this.traverseTree(tree));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册