Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
a6f86326
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a6f86326
编写于
12月 22, 2016
作者:
J
Jared Parsons
提交者:
GitHub
12月 22, 2016
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #16019 from jaredpar/fix-code
Combine duplicate methods
上级
6f30a310
8f9f2b87
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
14 addition
and
38 deletion
+14
-38
src/Compilers/Server/VBCSCompiler/NamedPipeClientConnection.cs
...ompilers/Server/VBCSCompiler/NamedPipeClientConnection.cs
+2
-23
src/Compilers/Shared/BuildServerConnection.cs
src/Compilers/Shared/BuildServerConnection.cs
+12
-15
未找到文件。
src/Compilers/Server/VBCSCompiler/NamedPipeClientConnection.cs
浏览文件 @
a6f86326
...
...
@@ -175,30 +175,9 @@ internal NamedPipeClientConnection(ICompilerServerHost compilerServerHost, strin
///
/// This will return true if the pipe was disconnected.
/// </summary>
protected
override
async
Task
CreateMonitorDisconnectTask
(
CancellationToken
cancellationToken
)
protected
override
Task
CreateMonitorDisconnectTask
(
CancellationToken
cancellationToken
)
{
var
buffer
=
Array
.
Empty
<
byte
>();
while
(!
cancellationToken
.
IsCancellationRequested
&&
_pipeStream
.
IsConnected
)
{
// Wait a second before trying again
await
Task
.
Delay
(
1000
,
cancellationToken
).
ConfigureAwait
(
false
);
try
{
CompilerServerLogger
.
Log
(
$"Pipe
{
LoggingIdentifier
}
: Before poking pipe."
);
await
_pipeStream
.
ReadAsync
(
buffer
,
0
,
0
,
cancellationToken
).
ConfigureAwait
(
false
);
CompilerServerLogger
.
Log
(
$"Pipe
{
LoggingIdentifier
}
: After poking pipe."
);
}
catch
(
Exception
e
)
{
// It is okay for this call to fail. Errors will be reflected in the
// IsConnected property which will be read on the next iteration of the
// loop
var
msg
=
string
.
Format
(
$"Pipe
{
LoggingIdentifier
}
: Error poking pipe."
);
CompilerServerLogger
.
LogException
(
e
,
msg
);
}
}
return
BuildServerConnection
.
CreateMonitorDisconnectTask
(
_pipeStream
,
LoggingIdentifier
,
cancellationToken
);
}
protected
override
void
ValidateBuildRequest
(
BuildRequest
request
)
...
...
src/Compilers/Shared/BuildServerConnection.cs
浏览文件 @
a6f86326
...
...
@@ -228,7 +228,7 @@ internal static string GetRuntimeDirectoryOpt()
Log
(
"Begin reading response"
);
var
responseTask
=
BuildResponse
.
ReadAsync
(
pipeStream
,
serverCts
.
Token
);
var
monitorTask
=
CreateMonitorDisconnectTask
(
pipeStream
,
serverCts
.
Token
);
var
monitorTask
=
CreateMonitorDisconnectTask
(
pipeStream
,
"client"
,
serverCts
.
Token
);
await
Task
.
WhenAny
(
responseTask
,
monitorTask
).
ConfigureAwait
(
false
);
Log
(
"End reading response"
);
...
...
@@ -263,17 +263,13 @@ internal static string GetRuntimeDirectoryOpt()
/// The IsConnected property on named pipes does not detect when the client has disconnected
/// if we don't attempt any new I/O after the client disconnects. We start an async I/O here
/// which serves to check the pipe for disconnection.
///
/// This will return true if the pipe was disconnected.
/// </summary>
private
static
async
Task
CreateMonitorDisconnectTask
(
NamedPipeClientStream
pipeStream
,
CancellationToken
cancellationToken
)
internal
static
async
Task
CreateMonitorDisconnectTask
(
PipeStream
pipeStream
,
string
identifier
=
null
,
CancellationToken
cancellationToken
=
default
(
CancellationToken
))
{
// Ignore this warning because the desktop projects don't target 4.6 yet
#pragma warning disable CA1825 // Avoid zero-length array allocations.
var
buffer
=
new
byte
[
0
];
#pragma warning restore CA1825 // Avoid zero-length array allocations.
var
buffer
=
Array
.
Empty
<
byte
>();
while
(!
cancellationToken
.
IsCancellationRequested
&&
pipeStream
.
IsConnected
)
{
...
...
@@ -282,17 +278,18 @@ internal static string GetRuntimeDirectoryOpt()
try
{
Log
(
"Before poking pipe
."
);
Log
(
$"Before poking pipe
{
identifier
}
."
);
await
pipeStream
.
ReadAsync
(
buffer
,
0
,
0
,
cancellationToken
).
ConfigureAwait
(
false
);
Log
(
"After poking pipe."
);
Log
(
$"After poking pipe
{
identifier
}
."
);
}
catch
(
OperationCanceledException
)
{
}
// Ignore cancellation
catch
(
OperationCanceledException
)
{
}
catch
(
Exception
e
)
{
// It is okay for this call to fail. Errors will be reflected in the
// IsConnected property which will be read on the next iteration of the
LogException
(
e
,
"Error poking pipe
"
);
LogException
(
e
,
$"Error poking pipe
{
identifier
}
.
"
);
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录