2016-12-14 138 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

相關問題