Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
230a2293
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
230a2293
编写于
5月 25, 2020
作者:
A
Alex Ross
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix race condition in getting task execution
Fixes #96643
上级
240d1b73
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
8 deletion
+18
-8
src/vs/workbench/api/common/extHostTask.ts
src/vs/workbench/api/common/extHostTask.ts
+18
-8
未找到文件。
src/vs/workbench/api/common/extHostTask.ts
浏览文件 @
230a2293
...
...
@@ -384,6 +384,7 @@ export abstract class ExtHostTaskBase implements ExtHostTaskShape {
protected
_handleCounter
:
number
;
protected
_handlers
:
Map
<
number
,
HandlerData
>
;
protected
_taskExecutions
:
Map
<
string
,
TaskExecutionImpl
>
;
protected
_taskExecutionPromises
:
Map
<
string
,
Promise
<
TaskExecutionImpl
>>
;
protected
_providedCustomExecutions2
:
Map
<
string
,
types
.
CustomExecution
>
;
private
_notProvidedCustomExecutions
:
Set
<
string
>
;
// Used for custom executions tasks that are created and run through executeTask.
protected
_activeCustomExecutions2
:
Map
<
string
,
types
.
CustomExecution
>
;
...
...
@@ -412,6 +413,7 @@ export abstract class ExtHostTaskBase implements ExtHostTaskShape {
this
.
_handleCounter
=
0
;
this
.
_handlers
=
new
Map
<
number
,
HandlerData
>
();
this
.
_taskExecutions
=
new
Map
<
string
,
TaskExecutionImpl
>
();
this
.
_taskExecutionPromises
=
new
Map
<
string
,
Promise
<
TaskExecutionImpl
>>
();
this
.
_providedCustomExecutions2
=
new
Map
<
string
,
types
.
CustomExecution
>
();
this
.
_notProvidedCustomExecutions
=
new
Set
<
string
>
();
this
.
_activeCustomExecutions2
=
new
Map
<
string
,
types
.
CustomExecution
>
();
...
...
@@ -496,6 +498,7 @@ export abstract class ExtHostTaskBase implements ExtHostTaskShape {
public
async
$OnDidEndTask
(
execution
:
tasks
.
TaskExecutionDTO
):
Promise
<
void
>
{
const
_execution
=
await
this
.
getTaskExecution
(
execution
);
this
.
_taskExecutionPromises
.
delete
(
execution
.
id
);
this
.
_taskExecutions
.
delete
(
execution
.
id
);
this
.
customExecutionComplete
(
execution
);
this
.
_onDidTerminateTask
.
fire
({
...
...
@@ -626,17 +629,24 @@ export abstract class ExtHostTaskBase implements ExtHostTaskShape {
return
taskExecution
;
}
let
result
:
TaskExecutionImpl
|
undefined
=
this
.
_taskExecution
s
.
get
(
execution
.
id
);
let
result
:
Promise
<
TaskExecutionImpl
>
|
undefined
=
this
.
_taskExecutionPromise
s
.
get
(
execution
.
id
);
if
(
result
)
{
return
result
;
}
const
taskToCreate
=
task
?
task
:
await
TaskDTO
.
to
(
execution
.
task
,
this
.
_workspaceProvider
);
if
(
!
taskToCreate
)
{
throw
new
Error
(
'
Unexpected: Task does not exist.
'
);
}
const
createdResult
:
TaskExecutionImpl
=
new
TaskExecutionImpl
(
this
,
execution
.
id
,
taskToCreate
);
this
.
_taskExecutions
.
set
(
execution
.
id
,
createdResult
);
return
createdResult
;
const
createdResult
:
Promise
<
TaskExecutionImpl
>
=
new
Promise
(
async
(
resolve
,
reject
)
=>
{
const
taskToCreate
=
task
?
task
:
await
TaskDTO
.
to
(
execution
.
task
,
this
.
_workspaceProvider
);
if
(
!
taskToCreate
)
{
reject
(
'
Unexpected: Task does not exist.
'
);
}
else
{
resolve
(
new
TaskExecutionImpl
(
this
,
execution
.
id
,
taskToCreate
));
}
});
this
.
_taskExecutionPromises
.
set
(
execution
.
id
,
createdResult
);
return
createdResult
.
then
(
result
=>
{
this
.
_taskExecutions
.
set
(
execution
.
id
,
result
);
return
result
;
});
}
protected
checkDeprecation
(
task
:
vscode
.
Task
,
handler
:
HandlerData
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录