2016-12-14 199 views

回答

1

StreamSocket.ConnectAsync,ReadAsync和WriteAsync有重载接受CancellationTokenSource

其实,所有的StreamSocketConnectAsync重载方法不接受CancellationToken参数。另外,我没有找到的ReadAsyncWriteAsync方法。通常我们使用DataReaderStreamReader来读取输入流StreamSocket

我们可以为您提到的连接创建一个CancellationToken,这是用于超时监控和取消连接。但是我们通过WindowsRuntimeSystemExtensions.AsTask方法来设置此异步操作作为任务,然后给出CancellationToken。示例代码类似如下:

socket = new StreamSocket(); 
HostName hostName = new HostName(host); 
CancellationTokenSource _cts = new CancellationTokenSource(); 
_cts.CancelAfter(5000); 
// Connect to the server 
await socket.ConnectAsync(hostName, port).AsTask(_cts.Token); 
return true; 

所以对于UpgradeToSslAsync方法,你也可以让它的任务,并给予CancellationToken如下:

await socket.UpgradeToSslAsync(SocketProtectionLevel.PlainSocket, hostName).AsTask(cancellationToken); 
+0

我的坏,看起来像我混了StreamSocket方法和Stream方法。现在一切都很清楚,谢谢。 – Alex

相关问题